Иногда истекает время ожидания (...) в System.Data.ProviderBase.DbConnectionPool.GetConnection (DbConnection owningObject) - PullRequest
2 голосов
/ 08 сентября 2011

Большую часть времени мой веб-сайт работает нормально, но иногда я получаю сообщения об истечении времени ожидания и не могу ничего сделать в течение 1-15 минут.Когда ошибка возникает в первый раз, это:

The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) (...)

И после этого, если я пытаюсь обновить страницу, я получаю:

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server  is not responding.   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
(...).

Каждое подключение, которое я использую, либо SqlDataSource или открыт в коде, подобном следующему:

SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Faktury_RebuildConnectionString"].ToString());
SqlCommand myCommand = new SqlCommand("Command String", myConnection);
try{                    
  myConnection.Open();
  somecodehere()
}
finally
{
  if (myConnection != null)
  {
    myConnection.Close();
  }
}

Где моя строка подключения в web.config равна Data Source=xxx\;Initial Catalog=xxx;User ID=xxx;Password=xxx;Max Pool Size=100;.

Я пытался отключить пул, но это не помогло.Я проверил, обрабатывается ли каждое соединение правильно, и это так.Все SELECT хороши - значит, они не занимают много времени.Особенно я вижу это, когда приложение работает должным образом.

Эта ошибка также возникает, когда я покидаю свой сайт в течение некоторого времени (15 - 60 минут) и снова захожу на него в первый раз;тогда все, что мне нужно сделать, это обновить его, и тогда он будет работать нормально.

Во время этой ошибки SQL Server работает нормально, а другие веб-сайты, использующие в основном те же запросы выбора, работают нормально.

У кого-нибудь естьпредложение что там может быть не так?У меня закончились идеи.

Редактировать: Было бы полезно по крайней мере не обновлять страницу после простоя в течение более длительного времени и истечения этого времени ожидания.

1 Ответ

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

В ADO.NET есть два основных свойства Timeout.

  1. Время ожидания подключения для подключения.Это можно решить, установив свойство ConnectionTimeout объекта Connection в строке подключения.
  2. Тайм-аут для доступа к данным (объект Command).Вы можете установить свойство CommandTimeout для объекта Command.Я рекомендую установить для свойства CommandTimeOut большее значение.Попробуй это.Пожалуйста, дайте мне знать, может ли это решить эту проблему или нет.Если у вас есть дополнительные вопросы, пожалуйста, дайте мне знать.
...