2011-10-13 2 views
0

나는 godaddy 웹 호스팅 서비스를 사용하고 있는데 여기에는 mySQL 데이터베이스가 포함됩니다.연결 시간 초과 문제

Visual Studio 2010을 사용하여 asp.net 및 C#을 사용하여 웹 응용 프로그램을 개발하고 있습니다.

"Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding."

나는 그것의 내 코드 오류 또는 원인이 서버에 있는지 알아 내려고 노력하고 있어요 :

내가 직접 액세스 (원격 액세스)하지만 시간의 절반 나는이 예외를 받고 있습니다에 대한 데이터베이스 구성 이 내 코드입니다 : Web.config의에서

내 연결 문자열

 <add name="GameDataServer" 
     connectionString="Server=<server host>; Port=3306; Database=<database name>; Uid=<uid>; Pwd=<password>; pooling=false;" 
     providerName="MySql.Data.MySqlClient;Connection Timeout=10; default command timeout=800;" /> 

당겨 데이터 내 코드 :

MySqlConnection myConnection; 
     MySqlDataAdapter myDataAdapter; 
     string strSQL; 
     myConnection = new MySqlConnection(this.connectionString); 
     strSQL = "SELECT * FROM table1"; 


     myDataAdapter = new MySqlDataAdapter(strSQL, myConnection); 
     DataSet myDataSet = new DataSet(); 
     try 
     { 
      myDataAdapter.Fill(myDataSet, "table1"); 
     } 

어떤 도움 풀링을 활성화하고 연결 제한 시간을 증가

감사

도론

+0

당신은 연결 풀링을 사용해야합니다. pooling = true –

+0

table1의 크기는 얼마나됩니까? "SELECT TOP (1) * FROM table1"을 시도해보고 문제가 계속 발생하는지 확인하십시오. – christofr

+0

연결과 관련된 모든 개체를 닫고 처분합니까? –

답변

0

코드 스 니펫에서 실제로 연결을 처리하는 것처럼 보이지 않습니다. 우리가 볼 수없는 finally 블록에서이 작업을 수행하고 있습니까? 그렇지 않은 경우 문제의 간헐적 인 특성을 설명 할 수 있습니다. 당신은 아마 ...

using (MySqlConnection myConnection = new MySqlConnection(this.connectionString)) 
{ 
    using (SqlDataAdapter myDataAdapter = new SqlDataAdapter(strSql, myConnection)) 
    { 
     // DataSet implements IDisposable via inheritance, but don't really need to call dispose on it. 
    } 
} 

그래서 : 권장 연습은 사용 블록으로 IDisposable을 구현하는 모든 개체를 래핑하는 것입니다 (그래서 CLR 제대로 개체의 처분 핸들을, 그리고 훨씬 청소기 코드를 유지)과 같은, 길 잃은 연결이 열려 있니? 그냥 생각.

또한 연결을 설정하는 동안 오류가 발생하는지 또는 명령 (SELECT * ...)이 호출되는지 확인할 수 있는지 확인하십시오. 명령 시간 초과 값을 늘려 볼 수도 있지만, 800 (초, 나는 믿습니다)은 꽤 오랜 시간입니다. 하지만 많은 데이터가 있다면 필요할 수도 있습니다. 테스트 용으로 극한값으로 설정하십시오. 최소한 문제의 범위를 좁힐 수 있습니다.

+0

또한, SQL 서버에 텔넷 연결을 시도해 볼 수 있습니다. 문제가 간헐적이기 때문에 여러 번 시도해야 할 수도 있습니다. telnet MySqlIpAddressOrHostName 3306 –

+0

이것은 아닙니다 돕는 것, 나는 문제가 내가 Visual Studio에서 개발 과정에서 그것을 사용하고 있기 때문에 모든 것이 잘 실행되고 있기 때문에 모든 파일이 잘 실행되고 있다고 생각합니다. –

+0

@DoronSinai 그냥 명확히하기 위해 개발 환경과 연결할 수 있습니까? 또는 개발 환경에서 프로덕션에만 연결할 수 있습니까? 연결할 수 있는지 확인하기 위해 해당 지역 환경에서 Telnet을 시도 했습니까? –

0

시도를 감사합니다.

+0

풀링에 대해 설명 할 수 있습니까? 타임 아웃 값을 제안 해 주시겠습니까? –

+0

연결 풀링은 응용 프로그램이 기존 연결을 다시 사용하는 경우 성능 최적화입니다. 연결 문자열에 "Pooling = true"를 설정합니다. 시간 초과 값의 경우 30 초를 시도하십시오. – Matthew

+0

이제 다음과 같은 오류가 나타납니다 : 연결된 당사자가 일정 시간이 지나면 제대로 응답하지 않거나 연결된 호스트가 응답하지 않아 연결이 실패한 경우 연결 시도가 실패했습니다. –

0

난 그냥 SqlDataAdapter를 가진 동일한 문제로 실행하고이 발견

SqlDataAdapter myDataAdapter = new SqlDataAdapter(strSQL, this.connectionString); 
myDataAdapter.SelectCommand.CommandTimeout=120; // or whatever limit you want