У нас возникают проблемы с производительностью нашего веб-приложения в периоды пиковой нагрузки, которые в настоящее время разделены между одним веб-сервером IIS6 2003 года и одним сервером БД SQL Server 2005. Время запросов на сервере БД выглядит нормально (около 30 мс), а загрузка процессора низкая (менее 20%), однако выполнение запросов на веб-сервере может занять много времени (более 1 секунды).
Я искал подсказки в perfmon и увидел, что среднее время ожидания ввода-вывода составляет ~ 400 мс, что вполне может объяснить разницу в производительности. Я также выполнил некоторые запросы внутри SSMS и вижу, что каждую секунду существует примерно 10 000 мс совокупных типов ожидания ASYNC_NETWORK_IO.
Из некоторых исследований кажется, что проблема либо в недостаточной пропускной способности сети, либо в том, что веб-сервер недостаточно быстро обрабатывает результаты. Как мне узнать, что это такое, а затем решить?
Мы используем NHibernate для нашего уровня данных, поэтому, насколько мне известно, DataReader-ы не используются. Нет известных запросов, которые возвращают большие наборы результатов, хотя есть одна таблица, в которой есть столбец, содержащий сжатые документы XML.
Заранее спасибо
Дополнительная запрашиваемая информация
- Sql Server настроен на использование TCP / IP
и протоколы общей памяти
- Мы делаем около 4 запросов БД на страницу, ничего смешного
- В пиковое время сервер БД отправляет 1,5 МБ / с
- На пике загрузка веб-сервера составляет около 60%
- AT пик, загрузка сетевого адаптера веб-сервера составляет 13 МБ / с. 8 МБ отправляет, 5 МБ получает. Тот же сетевой адаптер обрабатывает трафик SQL и HTTP
- Мы используем некоторое кэширование, но приложение довольно динамичное, поэтому большую часть времени требует актуальных данных