2011-04-07 5 views

답변

3

시간 초과가 만료 ..이 .. 난 더 이상

Server Error in '/site' Application. 
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. 

저를 도와주세요 내 사이트를 열 수 없습니다입니다 오류의 종류를 모른다 (뭔가 이상했다!보다 그것을해야). 특히 연결 풀에서 연결을 가져 오기 전에 제한 시간이 경과했습니다. 풀링 된 모든 연결이 사용 중이며 최대 풀 크기에 도달했기 때문에 발생했을 수 있습니다.

(당신은 연결 풀링을 사용하고 있고 아마 당신이 SqlConnection 또는 유사한 연결 개체를 완료 한 후, 그 위에 .Close()를 호출합니다. 연결을 종료하지 않음) 풀링

+0

이 오류는 DB 연결보다 IIS에서의 스레드 풀링과 관련이 있습니까? –

+0

코드를 확인하십시오 : 연결을 열어두고 있습니다. 작업이 끝나면 다시 닫고 다시 컴파일하고 다시 배포하십시오. –

+0

@ 존 - 아니, 거기에 IIS와 아무 상관이 : 그것은 연결 풀링에 대해 이야기하고 있습니다. 웹 브라우저에 표시된다는 사실은 웹 앱이기 때문에 간단합니다. –

3

10 Tips for Writing High-Performance Web Applications

연결

웹 응용 프로그램과 SQL Server ™ 사이에 TCP 연결을 설정하면 값 비싼 작업이 될 수 있습니다. Microsoft의 개발자는 연결 풀링을 사용하여 데이터베이스 연결을 다시 사용할 수있었습니다.

연결이 끝나면 항상 닫으십시오. 미리 정의 된 시간에 공용 언어 런타임 (CLR)을 사용하여 연결을 정리하고 닫지 마십시오. CLR은 결국 클래스를 파괴하고 연결을 강제 종료하지만 오브젝트에 대한 가비지 콜렉션이 실제로 발생할 경우에는 보장 할 수 없습니다.

연결 풀링을 최적으로 사용하려면 몇 가지 규칙을 따라야합니다. 먼저 연결을 열고 작업을 수행 한 다음 연결을 닫습니다. 연결을 열린 상태로 유지하고 다른 방법을 통해 전달해야하는 대신 (최적으로 팁 1을 적용해야하는 경우) 각 요청에 대해 연결을 여러 번 열고 닫는 것이 좋습니다. 둘째, 동일한 연결 문자열 (통합 인증을 사용하는 경우 동일한 스레드 ID)을 사용하십시오. 로그인 된 사용자를 기반으로 연결 문자열을 사용자 지정하는 것과 같이 동일한 연결 문자열을 사용하지 않으면 연결 풀링에서 제공하는 것과 동일한 최적화 값을 얻지 못합니다. 또한 많은 수의 사용자를 가장하면서 통합 인증을 사용하면 풀링 작업이 훨씬 효율적이지 않습니다. .NET CLR 데이터 성능 카운터는 연결 풀링과 관련된 성능 문제를 추적 할 때 매우 유용합니다. 응용 프로그램이 다른 프로세스에서 실행중인 데이터베이스와 같은 리소스에 연결될 때마다 리소스에 연결하는 데 걸린 시간, 데이터를 보내거나 가져 오는 데 걸리는 시간 및 왕복 횟수에 중점을 두어 최적화해야합니다. 응용 프로그램에서 모든 종류의 프로세스 홉을 최적화하는 것이 성능을 향상시키는 첫 번째 단계입니다.

+0

이것은 모든 텍스트를 복사하는 것은 불가사의입니다. 그냥 링크를 떠나. – Aliostad

+0

@Aliostad - 그렇긴하지만 .. 링크를 붙이면 contenet을 붙여서 더 쉽게 아이디어를 얻을 수 있다고 생각합니다. –

+0

작은 발췌 문장을 가져 와서 인용으로 만듭니다. 나는 내 downvote 다시 고려할 것입니다. – Aliostad