Поведение:
Приложение загружено и используется должным образом.
Внезапно конкретная DLL перестает загружаться. Сообщение об ошибке:
Компонент ActiveX не может создать объект.
В каждом случае объект был успешно создан много раз до сбоя. Все объекты помечены как «сохраняются в памяти».
Эта ошибка сбрасывается при перезапуске пула приложений. Может пройти несколько часов или месяцев, прежде чем он снова появится.
Проблема возникла в течение двух часов после обновления, а также никогда не возникала в течение нескольких месяцев безотказной работы.
Проблема произошла с сотнями одновременных пользователей (интенсивное использование), а также с 1-3 пользователями.
Пока возникает проблема, процесс, выполняющий этот пул приложений, не может создать объект, который дает сбой. Однако он может создавать любые другие объекты. Память, ЦП и другие ресурсы остаются в обычном режиме. Кроме того, другие процессы (например, автономный исполняемый файл) могут успешно создать объект.
Первый экземпляр проблемы появился в середине 2008 года. С тех пор было менее пятидесяти экземпляров, несмотря на пул из сотен серверы, на которых это должно происходить. Все экземпляры, кроме одного, отказали в одной и той же DLL.
Информация об ошибке DLL:
наиболее распространенная - общая структура данных, реализующая b-дерево, не имеет ссылок, кроме как на ее интерфейс. Код состоит из массивов и одного использования функции vb6 Event.
одноразовый - взаимодействие с .NET-модулем. сбой происходит при попытке создать объект взаимодействия, а не объект .NET. Этот объект обновляется несколько раз в год.
Среда приложения:
Приложение, размещенное в IIS
VB6, классический ASP, некоторое взаимодействие с второстепенными компонентами .NET
Windows Server 2003 / Windows Server 2008 (обе столкнулись с проблемой независимо друг от друга).
Попытки воспроизвести:
Использование сценариев (и реальных людей) для запуска тех же рабочих процессов конечных пользователей, о которых сообщалось в наших журналах за несколько дней до возникла проблема.
Использование сценариев для максимально быстрого создания / уничтожения подозрительных объектов из нескольких одновременных сеансов.
Дикие домыслы.
Никакого преднамеренного успеха, но он проявляется случайно на серверах сам по себе.
Устранение неполадок:
Проверка кода
Тестовые жгуты для исследования верхних пределов создания / разрушения объекта
Проверка возможности создания объекта вне процесса, в котором возникла проблема
Мониторинг ресурсов во времени на серверах под нагрузкой
Обзор журналов IIS, ошибок и событий для определения событий, приведших к проблеме
Вопросы:
Есть идеи, как воспроизвести проблему?
Что могло вызвать такое поведение?
Как можно обойти первые два вопроса в пользу быстрого решения?