У меня есть два производственных веб-сервера в конфигурации с балансировкой нагрузки . Веб-приложение ASP.NET, которое они размещают, разделяет состояние (например, веб-ферму), используя эту строку в своих web.configs:
<sessionState mode="StateServer" stateConnectionString="tcpip=9.9.9.9:42424" cookieless="false" timeout="60"/>
9.9.9.9 - это IP-адрес машины, на которой работает служба состояния сеанса asp.net (хорошо, это не 9.9.9.9 реально, поменял в защиту невиновных). Это третья машина (собственно, сервер базы данных.
Он работал нормально, пока ...
Внезапно сайт отключился, просто отображалась общая страница ошибки asp.net («отключите пользовательские ошибки, чтобы увидеть эту ошибку» или что-то еще).
В журнале приложения записано фактическое сообщение об ошибке:
Необработанное произошло исключение. Невозможно отправить запрос состояния сеанса серверу состояния сеанса. Убедитесь, что служба состояния ASP.NET запущена и что порты клиента и сервера совпадают. Если сервер находится на удаленном компьютере, убедитесь, что он принимает удаленные запросы, проверив значение HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection. Если сервер находится на локальном компьютере, и если ранее упомянутое значение реестра не существует или установлено в 0, тогда в строке подключения к серверу состояния необходимо использовать либо «localhost», либо «127.0.0.1» в качестве имени сервера.
Похоже, что веб-приложение не смогло связаться с сервером состояний (9.9.9.9).
Я «попытался включить if auf, а затем onnegen» - перезапуск сервера состояний устранил проблему.
Я действительно хочу знать, что произошло и почему, чтобы предотвратить повторение этого.
Пока что у меня есть только две теории:
Примерно в то время было применено обновление Windows для .NET Framework 4 на государственном сервере . Так, может быть, обновление что-то сделало с государственной службой asp.net? Средство просмотра событий Windows показало, что примерно в то время .net 4 зарегистрировал предупреждение:
Обновления метабазы IIS были прерваны, потому что IIS либо не установлен, либо отключен на этом компьютере. Чтобы настроить ASP.NET для работы в IIS, установите или включите IIS и повторно зарегистрируйте ASP.NET с помощью aspnet_regiis.exe / i.
Какая-то временная проблема в сети между веб-сайтами prod и государственным сервером? Хотя они действительно сидят рядом друг с другом в одной физической стойке.
??? Есть какие-нибудь другие идеи?
Кто-нибудь видел это раньше или мог исправить меня?