원래 연결 유출이라고 생각했지만 실망스러운 문제가 발생했습니다. 이 응용 프로그램의 데이터 액세스는 Microsoft의 Enterprise Libraries (v4)를 사용하고 있습니다. 모든 데이터 액세스 호출은 같은 ASP.NET SqlConnection 시간 초과 문제
using (DbCommand dbCommand = db.GetStoredProcCommand("sproc"))
{
db.AddInParameter(dbCommand, "MaxReturn", DbType.Int32, MaxReturn);
...more code
}
지금이 응용 프로그램의 인덱스는 모든로드 데이터베이스에 8 호출을 내가 인덱스를 약 15 배를 새로 고쳐 무릎에 응용 프로그램을 가져올 수
로 사용하여 문에 싸여있다. 그것은 때 데이터베이스가 113 연결에 도달하면이 오류가 나타납니다 것 같습니다. 다음은 이상하게 만드는 이유입니다.트래픽이 많은 사이트에서 entlib과 유사한 코드를 실행했지만이 문제가 절대로 없었습니다.
나는 데이터베이스에 대한 모든 연결을 죽이고 다시 생산 응용 프로그램을 얻을 내가 응용 프로그램을 새로 고칠 때마다 실행중인 경우, 나는이 SQL
SELECT DB_NAME(dbid) as 'Database Name',
COUNT(dbid) as 'Total Connections'
FROM sys.sysprocesses WITH (nolock)
WHERE dbid > 0
GROUP BY dbid
를 실행할 수 있습니다 내가 연결의 수를 적극적으로 각각 증가 볼 수 있습니다
페이지를 새로 고칩니다. 동일한 연결 문자열을 사용하여 로컬 상자에서 동일한 코드를 실행해도이 문제가 발생하지 않습니다. 또한 프로덕션 웹 사이트가 다운 된 경우 Visual Studio를 통해 사이트를 실행하고 정상적으로 실행할 수 있습니다. 둘 사이의 유일한 차이점은 프로덕션 사이트에 Windows 인증이 설정되어 있고 로컬 복사본이없는 것입니다. Windows 인증을 해제하면 서버에 아무런 영향을주지 않는 것 같습니다.
이 문제의 원인이나 연결이 SQL Server에서 처리되지 않는 이유에 대해서는 전혀 알지 못합니다. EntLib 객체는 exploseily 객체를 닫을 수 없도록 아무 것도 .Close() 메소드를 전개하지 않습니다.
의견이 있으십니까? 감사합니다.
편집 와우 난 그냥 실제로 오류 메시지가 게시되지 않을 것으로 나타났습니다. 오우. 실제 연결 오류 : 제한 시간이 만료되었습니다. 풀에서 연결을 가져 오기 전에 시간 초과 기간이 경과했습니다. 이는 풀링 된 모든 연결이 사용 중이며 최대 풀 크기에 도달했기 때문에 발생했을 수 있습니다.
"더 많은 코드"를 제공하십시오. –
인덱스가 저장된 procs/SELECT 등을 8 번 호출하면이 쿼리 각각에 의해 데이터베이스에 얼마나 많은 시간이 소요됩니까? 페이지가 DB에서 데이터를 가져 오는 데 꽤 시간이 걸릴 수도 있고 동일한 페이지가 요청 된 경우 새로운 연결 (또는 풀에서)이 발생하고 장기 실행 쿼리를 실행하는 경우 일 수 있습니까? – shahkalpesh
더 많은 코드는 스칼라를 사용하거나 exectues 내부에서 독자를 실행하기 때문에 실제로는 관련이 없습니다. 정말로 바닐라 물건. – dparsons