Проблема производительности веб-приложения - PullRequest
0 голосов
/ 10 июля 2009

У меня есть сайт, который висит каждые 5 или 10 запросов. Когда он работает, он работает быстро, но если вы оставите браузер на пару минут, а затем нажмете на ссылку, он просто зависнет, не отвечая. Пользователь должен несколько раз нажать кнопку обновления в браузере, а затем он снова быстро запускается.

Я использую .NET 3.5, ASP.NET MVC 1.0 на IIS 7.0 (Windows Server 2008). Веб-приложение подключается к БД SQLServer 2005, которая работает локально на том же экземпляре. БД имеет около 300 мегабайт оперативной памяти, а остальное бесплатно для веб-запросов, я полагаю.

Он размещен на облачных серверах GoGrid, и этот экземпляр имеет 1 ГБ оперативной памяти и 1 ядро. Я понимаю, что это немного, но в настоящее время я единственный, кто пользуется сайтом, и я все еще получаю эти зависания.

Я знаю, что это трудно устранить, но я надеялся, что кто-то может указать мне правильное направление в отношении возможных проблем конфигурации IIS или того, какие "грубые" средние требования к оборудованию будут использовать эти технологии на 1000 пользователей, и т. д. Возможно, для веб-сервера у меня должно быть минимум 2 ядра, так что если он занят, вы все равно получите ответ. Или, может быть, люди из слешдота правы, и я идиот, пользующийся Windows, лол. Однако, по моему опыту, это обычно МОЙ алгоритм / ошибка конфигурации, а не ошибка основной технологии.

Любые идеи приветствуются.

Ответы [ 4 ]

1 голос
/ 10 июля 2009

Ваш пул приложений может быть закрыт из-за неактивности. Существует настройка Время простоя для пула в минутах (она находится под Расширенные настройки пула - Модель процесса ). После завершения работы приложения потребуется некоторое время.

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

1 голос
/ 10 июля 2009

Какая диагностика вам доступна? Можете ли вы сказать, что происходит, когда пользователь впервые нажимает кнопку? Видит ли ваше приложение этот запрос, а затем затрачивает много времени на его обработку, или происходит задержка, и затем ваше приложение запускается и работает так же быстро, как и раньше? Или этот первый запрос просто полностью теряется?

Я предполагаю, что происходит какая-то подкачка страниц, я полагаю, что Windows имеет тенденцию выбрасывать неиспользуемые недавно приложения, а затем подкладывать их обратно. Это происходит с вашим приложением, или БД или оба?

В качестве эксперимента - что произойдет, если в вашем приложении есть небольшая хитрая страница "howAreYou". Выполняет крошечный объем работы, такой как получение счетчика использования из базы данных и его отображение. Сделайте так, чтобы маленький клиент монитора заходил на эту страницу каждую минуту или около того. Измерение производительности с течением времени. Шипы? Последовательность? Поддерживает ли само присутствие активности ваше приложение и предотвращает пейджинг?

Еще одна идея: вы полагаетесь на кеширование? У вас есть какое-либо старение в этом кеше?

0 голосов
/ 10 июля 2009

Для многих соединений с базой данных, не будучи выпущенным? Подключение какого-либо сервиса / компонента, который вызывает тайм-аут? Плохая версия ресурса? Сетевой трафик? Циклические запросы или в логике кода?

0 голосов
/ 10 июля 2009

Получает ли сайт значительный трафик? Если так, то я буду искать плохо оптимизированные запросы или запросы, которые зацикливаются.

Ваша конфигурация звучит нормально, если ваш общий трафик относительно низкий.

...