Это довольно большой, плохо закодированный веб-сайт ASP.NET, который мне сейчас поручено поддерживать.Одна проблема, которую я не знаю, как решить, заключается в том, что в кажущееся случайное время живой веб-сайт полностью блокируется, доступ к странице в порядке, но все, что касается базы данных, приводит к зависанию приложения на неопределенное время.
Причина, по-видимому, заключается в гораздо большем количестве открытых соединений с базой данных, чем можно было бы ожидать от веб-сайта с низким уровнем трафика.Монитор активности показывает более 150 открытых соединений, большинство из которых имеют значение Application «Поставщик данных .NET SqlClient» с логином сетевой службы.
Быстрое решение - перезапустить службу SQL Server (я перезапустилПул приложений ASP.NET также просто для того, чтобы приложение позволяло что-либо пропустить, и предотвращает повторную попытку любого кода открыть соединения, если был какой-то цикл, о котором я не знаю).Это, однако, не помогает мне решить проблему.
Приложение использует класс Microsoft SQLHelper, который является довольно распространенной библиотекой, поэтому я вполне уверен, что код, который использует этот класс, будет иметь закрытые соединения, гдетребуется.
Однако я заметил несколько DataReader, которые не закрыты должным образом.Я думаю, что я прав, говоря, что DataReader может сохранять базовое соединение открытым, даже если это соединение закрыто, потому что это подключенный класс (поправьте меня, если я ошибаюсь).
Что-то особенное эточто один из администраторов перезапустил сервер (не сервер базы данных, а реальный сервер) и сразу же, сайт снова зависнет.Виновником снова было 150+ открытых подключений к базе данных.
У кого-нибудь есть какие-либо диагностические методы, которыми они могут поделиться со мной, чтобы выяснить, где это происходит?
Обновление: В файлах журнала SQL Server показано много таких записей (30 +)
2010-10-15 13: 28: 53.15 spid54 Запуск базы данных 'test_db'.
Мне интересно, если серверполучает удар от атакующего.Это объясняет множество подключений сразу после загрузки и, казалось бы, в случайное время.
Обновление: Изменили свойство AutoClose, хотя все еще искали решение!
Обновление 2: Смотрите мой ответ на этот вопрос для решения!