Выполнение запроса с использованием ADODB Connection в произвольном порядке занимает много времени - PullRequest
2 голосов
/ 26 сентября 2011

Я столкнулся с проблемой, которая, кажется, как-то связана с конфигурацией веб-сервера и приводит к тому, что запросы произвольно занимают много времени. Приложение создано с использованием старого простого Classic ASP и ADODB Connection.

Сценарий выглядит следующим образом:

  • в начале обработки каждого HTTP-запроса в скрипте открывается одно соединение
  • это соединение используется для выполнения запроса к SQL Server, который находится в отдельном блоке. conn.Execute используется. После этого соединение НЕ закрывается
  • обычно от нескольких до нескольких десятков conn.Execute на одной странице ASP

Все работало хорошо до недавнего времени, когда некоторые из conn.Execute начали выполняться намного дольше, совершенно случайно.

  • разница, например, 15 мс нормального времени выполнения против 2000 мс времени выполнения
  • на стороне SQL Server, Profiler не показывает более длительное время выполнения запроса, поэтому должно быть что-то, блокирующее запрос conn.Execute

Когда надлежащая практика закрытия соединения после каждого conn.Execute была реализована, проблема исчезает. Однако, как я уже говорил, до недавнего времени все работало безупречно. Это веб-приложение довольно большое, и перезапись его для закрытия и повторного открытия соединений займет некоторое время. И мне нужно краткосрочное решение.

Я предполагаю, что это может иметь отношение к размеру пула соединений, однако это не ADO.NET, поэтому я не уверен, следует ли вообще учитывать проблему пула соединений. На стороне SQL Server нет ограничений на количество одновременных подключений к серверу.

Мне нужны некоторые подсказки. Мозговой штурм возможных идей.

1 Ответ

0 голосов
/ 27 сентября 2011

Может быть связано с задержками при разрешении имени хоста в строке подключения через DNS - вы пытались вставить IP-адрес в строку подключения вместо имени хоста?

...