ODP.Net을 사용하여 ASP MVC 페이지에서 Oracle 데이터베이스에 연결하는 웹 페이지가 있습니다. 어떤 이유에서든 애플리케이션 풀이 재활용되면 사용자로드가 많은 동안 내부 오라클 클래스에서 연결 시간 초과 오류가 거의 발생하지 않습니다.C# 응용 프로그램 풀이 재활용 될 때 Oracle 데이터베이스 연결 시간 초과
내부 예외 : 스택 트레이스 : OracleInternal.ConnectionPool.PoolManager`3.Get (ConnectionString을 csWithDiffOrNewPwd, 부울 bGetForApp, 문자열 affinityInstanceName, 부울 bForceMatch)에서
어떻게 우리가이 시나리오를 처리 할 수 있습니까? 이 오류의 원인은 무엇일까요?
이것이 응용 프로그램 풀 재활용과 관련이 없다고 생각합니다. 문제는 최대 풀 크기에 도달했기 때문입니다. 코드 어딘가에 연결을 닫지 않아 다른 요청을 처리하기 위해 풀에 연결을 반환하지 않거나 풀 크기가 너무 작습니다. –
연결을 닫는 것을 잊었을 때 결국 연결이 닫히지 만 GC가 해당 오브젝트를 수집 할 때만 발생합니다. 따라서 많은 연결이 오랫동안 풀에 반환되지 않으며 최대 풀 크기에 도달하게됩니다. –
연결이 닫히기 위해 USING 블록 내부에서 연결을 만들고 있습니다. 이 문제는 때로는 연결이 닫히지 않는 경우에만 발생하기 때문에 자주보아야합니다. – Zeus