Мы видели эту проблему некоторое время теперь, и я действительно пытаюсь перенести голову, что вызывает ее.
Пару раз день, мы будем видеть периоды, где веб-страницы начинают бросать" [Microsoft] [Драйвер SQL Server ODBC] Тайм-аут, истек" затем вскоре позже, страницы начинают бросать" [Microsoft] [Драйвер SQL Server ODBC] [DBNETLIB], SQL Server не существует или доступ запрещен."
У нас есть много различных приложений, которые соединяются с этим сервером базы данных. Это составляет в среднем приблизительно 2 500 параллельных соединений, обрабатывающих в среднем 10 000 транзакций в секунду. Большинство наших приложений не имеет никаких проблем вообще, проблемы, кажется, только происходят на веб-сервере. (Возможно, это связано с организацией пула подключений?)
Я не уверен, что приписать эту проблему. Рассматриваемый SQL-сервер значительно подавлен для работы, которую он делает и оборудован лицензированием на процессор. Таким образом, я не думаю, что мы смотрим на проблему лицензирования/производительности.
Я думал, возможно, была проблема возможности соединения IP, таким образом, я изменил ConnectionString для использования IP-адреса и выполнил некоторые продолжительные ping. Я получил 0 пакетов, потерянных между веб-сервером и Сервером базы данных.
Строка подключения ASP теперь похожа на это:
Provider=MSDASQL; Driver={SQL Server}; Server=10.0.100.100; Database=DBName; UID=WebUserName; PWD=WebUserPassword; ConnectionTimeout=15; CommandTimeout=120;
Пользователь является непользователем домена, соединяющимся использующий аутентификацию SQL Server. Таким образом, я не думаю, что это - связанная с доменом проблема. Я проверил файлы журнала SQL-сервера и ничего не нашел безотносительно соответствия инцидентам.
Я нашел другой stackoverflow вопрос, описывающий подобное поведение, но без разрешения.
Детали:
Кто-либо видел/разрешал эту проблему типа? У кого-либо есть какие-либо предложения как, туда, где я должен посмотреть затем?
Спасибо!
- Zorlack
Править
Кто-либо может сказать мне, что лучшая практика для выполнения запросов SQL у классического asp высокой загрузки? Мы хотим попытаться усилить организацию пула подключений?
В рассмотрении кода довольно много похоже на это:
Set objCn = Server.CreateObject("ADODB.Connection")
objCn.Open(Application("RoConnStr"))
'do some stuff
objCn.Close
Set objCn = Nothing
Решение (на совет ScottE)
Эта описанная статья, к мишени, моей проблеме. Я внес изменение реестра и затем перезагрузил сервер.
Решенная проблема!
Ваше веб-приложение закрывается и удаляет (обнулено) соединения с базой данных?
Кроме того, пробовали ли вы использовать SQLOLEDB вместо ODBC? Не могу придумать ни одной причины, по которой вы бы использовали здесь ODBC.
вот моя строка подключения к очень загруженному классическому asp-приложению:
Dim strcConn
strConn = "Provider=SQLOLEDB; Data Source=someserver; Initial Catalog=somedb; User ID=someuserid; Password=somepassword"
Edit
Я наткнулся на это сообщение в блоге. Вроде интересно.
http://www.ryanbutcher.com/2006/02/classic-asp-on-2003-server-with.html
Те случаи, когда у меня возникали подобные проблемы, всегда были связаны с тем, что кто-то держал данные открытыми в клиентском приложении без фиксации оператора 'select ...'.
Не знаю, решит ли это вашу проблему... хотя...