За эту полезную статью Я подтвердил, что в каком-то приложении на моем сервере IIS 6 под управлением W2k3 произошла утечка пула соединений.
Сложность в том, что я обслуживаю 300 веб-сайтов, написанных 700 разработчиками с этого сервера, в 6 пулах приложений, 50% из которых - .NET 1.1, который даже не показывает соединения в счетчике производительности CLR Data. Я мог бы наблюдать за ростом соединений с моей стороны, если бы все было .NET 2.0+, но мне даже не повезло с этим тонким инструментом мониторинга.
Мои 300 веб-сайтов подключаются к, вероятно, более 100 баз данных, распределенных между Oracle, SQLServer и выбросами, поэтому я также не могу наблюдать за соединениями со стороны базы данных.
Прямо сейчас мой лучший и единственный план - провести свободный бинарный поиск моих худших преступников. Я убиваю пулы приложений и медленно удаляю из них приложения, пока не найду, какие отдельные приложения приводят к разрыву большинства соединений, когда я уничтожаю их пул. Но поскольку это производственная коробка, и мне нравится постоянная работа, это может занять несколько недель в качестве метода отслеживания.
Кто-нибудь знает способ опроса пулов соединений IIS, чтобы узнать их происхождение или владельца? Есть ли у меня триггер MSMQ, к которому я могу подключиться при их создании? Что-нибудь глупое я пропускаю?
Кевин
(Я включу код ошибки, чтобы другие могли найти ваши ответы с помощью поиска:
Исключение: System.InvalidOperationException
Сообщение: истекло время ожидания. Время ожидания истекло до получения соединения из пула. Это могло произойти из-за того, что все пулы подключений использовались и был достигнут максимальный размер пула.)