У нас есть приложение ASP.Net 3.5 на IIS7.
На нашем сервере предварительного просмотра он работает с почти мгновенным получением и ответом (~ 1 секунда с момента перехода к отображению страницы).
У нас есть производственная среда с 5 веб-интерфейсами и кластером из 3 баз данных sql.
Концы шрифтов сбалансированы по нагрузке с помощью BigIP от f5 по циклическому алгоритму.
Между интерфейсами и серверами sql есть брандмауэр.
В производственной среде мы получаем 45-секундное сообщение Get, прежде чем сервер начнет свой ответ. Исходя из приведенной выше информации, в чем может быть виноват?
Заранее благодарю.
Причиной проблемы может быть любой из упомянутых вами компонентов.
Лучший способ устранить проблему - это прослушать входящие и исходящие интерфейсы на клиенте, серверах IIS и серверах SQL. У вас не должно возникнуть проблем с определением источника проблемы, если у вас есть запись о том, где находится ваш запрос и его последующий ответ в течение 45-секундного окна.
У вас есть мониторинг по настройке f5? Если вы включите мониторинг по умолчанию, он проверяет каждые 5 секунд и пометит сервер как отключенный через 12 - так вы узнаете, была ли проблема между F5 и веб-серверами. Если у вас нет базового мониторинга, вы можете подумать о его настройке, чтобы F5 мог принимать разумные решения об узлах.
Кроме того, если вы повторно проверяете базовую настройку, убедитесь, что все ваши сетевые устройства имеют правильную скорость и настройки дуплекса. Удивительно, как часто один сервер с полудуплексным интерфейсом разрушает работающее в остальном приложение.
Я согласен с @Rich, проблема может быть где угодно. Чтобы быть конкретным, используйте библиотеку ведения журналов для своего приложения dotNet и проверьте ее, проверьте журналы IIS и, возможно, используйте SQL Server Profiler на своих серверах базы данных.
Единственная сложность - это кластеры, поэтому вы увидите только 1/5 веб-трафика и 1/3 трафика базы данных. Если каждый запрос выполняется медленнее на 45 секунд, я думаю, отслеживание любого запроса укажет вам на проблему. В противном случае включите липкие сеансы, чтобы всегда использовать один и тот же сервер в течение всего сеанса тестирования.
Конечно, мы предполагаем, что вы проверили основы - ваши серверы не испытывают недостатка в ресурсах, верно? (то есть: ЦП не загружен, все еще есть свободная оперативная память, файл подкачки не загружен.)