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