почему мой сайт загружается так долго? - PullRequest
2 голосов
/ 30 ноября 2009

Здесь проблема.

Мой сайт размещен на общем хостинге для asp.net mvc. Я вхожу в систему, говорю и заполняю одну из моих форм и хочу отправить ее. Передача выполняется с помощью jquery ajax-запроса.

Теперь он внезапно зависнет и не будет делать что-то около 20 секунд, а затем внезапно завершит мою просьбу о сохранении формы.

Теперь вот эта вещь. Я мог сделать один и тот же запрос 10 раз, а остальные 9 раз могли бы занять около 200-500 миллисекунд. Так почему же такая разница во времени?

Также кажется, что если я делаю запрос, то выполняю другой запрос, оба запроса будут выполняться быстро, но если я остановлюсь и вернусь через пару минут, первый запрос может занять некоторое время (кажется, он колеблется от 5 до 20 секунд). ).

Но на самом деле это, кажется, происходит, когда хочется. Иногда я могу почти весь сеанс не видеть. Иногда я получаю несколько строк подряд, и мне приходится обновлять страницу, и тогда она снова идет быстро.

Так, что вызывает это?

  • Может быть, это код, который я написал, и поэтому он идет медленно?
  • Это мой хостинг?
  • Это моя связь дома?

Как будто я понятия не имею, что вызывает это или как проверить это, поэтому я даже не могу начать это исправлять.

Ответы [ 5 ]

4 голосов
/ 30 ноября 2009

Вам необходимо использовать профилировщик (например, ANTS Profiler ), чтобы определить причину замедления. Существует так много возможных причин потери производительности, что невозможно будет сказать без некоторых данных о том, как работает ваше приложение.

3 голосов
/ 30 ноября 2009

Первое, с чего начать, с сетевого анализатора, такого как Fiddler или Firebug. Вы должны быть в состоянии довольно легко определить, связана ли проблема с задержкой в ​​сети или она просто ожидает ответа от сервера. Скорее всего, это сервер.

Следующим шагом будет возможность увидеть, что происходит с процессором и памятью, когда вы сталкиваетесь с медленным запросом, и если он обращается к базе данных, вы должны быть в состоянии увидеть, что там происходит. Возможно, есть транзакция, которая блокируется.

В идеале вам следует взглянуть на несколько встроенных счетчиков производительности системы, которые относятся к аппаратному обеспечению и к самому .Net, например к очереди запросов и статистике GC.

1 голос
/ 30 ноября 2009

Я также заметил на виртуальном хостинге, что приложение может выпасть из глобальной памяти и потребовать перекомпиляции при первом посещении сайта. этот процесс (перекомпиляция), очевидно, связан с размером вашей кодовой базы, но 15-20 секунд не кажется необоснованным для перекомпиляции сайта малого и среднего размера.

Чтобы обойти это, убедитесь, что все ваши представления скомпилированы, а не только ваш основной код DLL.

0 голосов
/ 30 ноября 2009

Вы добавили вход в свое приложение, чтобы вы могли идентифицировать лаги в коде своего сервера?

Так же, как Fiddler и Firebug, я бы реализовывал стеки логирования. Возможно, конкретный запрос на сервере задерживается.

Ведение журнала сузит возможности, где оно находится.

0 голосов
/ 30 ноября 2009

Мне было бы любопытно, если бы вы проверяли это в разное время в течение дня, или если вы просто развернули и заметили задержку. Возможно, на сервере выполняются резервные копии или другие административные задания, которые вызывают такое поведение. Проблема в том, что на общем хосте у вас очень мало вариантов для определения причины проблем с производительностью. Если задержка происходит постоянно, вероятно, это одна из следующих вещей:

  • на сервере слишком много общих учетных записей и недостаточно ресурсов (ваш хост не допустит этого)
  • вы делитесь оборудованием с очень занятым сайтом (ваш хост не с готовностью это признает, но вы можете узнать это сами)
  • другие учетные записи работают с приложениями, требующими значительных ресурсов (ваш хост поможет вам в этом)

Вы можете выполнить обратный поиск DNS для своего IP и посмотреть, что еще работает. Вы можете пропинговать сервер, ожидая ответа, и посмотреть, увеличится ли задержка в сети, или ответ получится равномерно быстрым. И, наконец, вы могли бы попросить человека поддержки посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...