Создание объектов внезапно начинает завершаться ошибкой после того, как они были успешно загружены в память

Поведение:
Приложение загружено и используется должным образом. Внезапно конкретная DLL перестает загружаться. Сообщение об ошибке:
Компонент ActiveX не может создать объект.
В каждом случае объект был успешно создан много раз до сбоя. Все объекты помечены как «сохраняются в памяти».

Эта ошибка сбрасывается при перезапуске пула приложений. Может пройти несколько часов или месяцев, прежде чем он снова появится.

Проблема возникла в течение двух часов после обновления, а также никогда не возникала в течение нескольких месяцев безотказной работы.
Проблема произошла с сотнями одновременных пользователей (интенсивное использование), а также с 1-3 пользователями.

Пока возникает проблема, процесс, выполняющий этот пул приложений, не может создать объект, который дает сбой. Однако он может создавать любые другие объекты. Память, ЦП и другие ресурсы остаются в обычном режиме. Кроме того, другие процессы (например, автономный исполняемый файл) могут успешно создать объект.

Первый экземпляр проблемы появился в середине 2008 года. С тех пор было менее пятидесяти экземпляров, несмотря на пул из сотен серверы, на которых это должно происходить. Все экземпляры, кроме одного, отказали в одной и той же DLL.

Информация об ошибке DLL:
наиболее распространенная - общая структура данных, реализующая b-дерево, не имеет ссылок, кроме как на ее интерфейс. Код состоит из массивов и одного использования функции vb6 Event. одноразовый - взаимодействие с .NET-модулем. сбой происходит при попытке создать объект взаимодействия, а не объект .NET. Этот объект обновляется несколько раз в год.

Среда приложения:
Приложение, размещенное в IIS
VB6, классический ASP, некоторое взаимодействие с второстепенными компонентами .NET
Windows Server 2003 / Windows Server 2008 (обе столкнулись с проблемой независимо друг от друга).

Попытки воспроизвести:
Использование сценариев (и реальных людей) для запуска тех же рабочих процессов конечных пользователей, о которых сообщалось в наших журналах за несколько дней до возникла проблема.
Использование сценариев для максимально быстрого создания / уничтожения подозрительных объектов из нескольких одновременных сеансов.
Дикие домыслы. Никакого преднамеренного успеха, но он проявляется случайно на серверах сам по себе.

Устранение неполадок:
Проверка кода
Тестовые жгуты для исследования верхних пределов создания / разрушения объекта
Проверка возможности создания объекта вне процесса, в котором возникла проблема
Мониторинг ресурсов во времени на серверах под нагрузкой
Обзор журналов IIS, ошибок и событий для определения событий, приведших к проблеме

Вопросы:
Есть идеи, как воспроизвести проблему?
Что могло вызвать такое поведение?
Как можно обойти первые два вопроса в пользу быстрого решения?

11
задан Jesse 15 February 2011 в 22:56
поделиться