2011-01-24 7 views
5

심각한 연결 개체 누수가있는 .net/web 서비스 프로젝트를 상속 받았습니다. 이상하게도 최근까지는 아무런 문제없이 꽤 오랜 기간 제작되었습니다. 가비지 컬렉터가 평소에 상당히 빨리 청소한다고 생각합니다. 하나의 고객 사이트에서 하나의 웹 서버가 과중한 부하가 걸렸을 때 연결이 끊어지기 시작했습니다.ADO.Net 연결 풀 최대 풀 크기에 도달했습니다.

분명히 해결책은 모든 연결 누설을 수정하는 것이지만, 그렇게 빨리 진행되지는 않습니다. 심지어 최대 풀 설정을 연결 문자열에서 변경할 수 없으며 연결 문자열은 응용 프로그램에 의해 동적으로 작성됩니다. 이것은 신속하지 않은 프로세스를 거쳐야하는 코드 변경이 필요합니다.

코드 변경이 발생할 때까지 서버에서 수행 할 수있는 작업이 있습니까?

왜 이것이 단지 한 위치에서만 문제가 되는가? 그 질문에 대한 답을 알고 있다면 나는 임시적인 해결 방법을 찾아 낼 수있을 것이다.

실제 문제가 완전히 다른 것일 수 있으며 연결 풀 문제의 원인이 될 수 있습니까? 예를 들어, 서버의로드 밸런싱이 문제가있는 웹 서버에 문제가 있거나 문제가있는 것일 수 있습니다.

답변

3

IIS 6 이상에서 호스팅하는 경우 (예약 된 경우) 응용 프로그램 풀이 예약 된대로 강제로 재생되도록 할 수 있습니다. 필자는 오라클 데이터베이스 연결을 닫지 않는 원격 응용 프로그램으로이 작업을 수행해야했습니다. 우리는 객체를 자신의 응용 프로그램 풀에 넣은 다음 매 시간마다 재활용하도록 설정합니다. 문제를 추적하고 해결 방법을 발표하는 동안이 작업은 몇 개월 동안 진행되었습니다.

+0

감사합니다. – dwidel

5

quickfix는 연결 문자열의 풀 크기를 늘릴 수 있습니다. 이 속성 Max Pool Size=1000을 추가하면 문자열이 ie와 같이 보입니다. 이

Data Source=server;Initial Catalog=db;User ID=user; Password=pwd;Max Pool Size=1000 
0

작업 완료 후 모든 연결 문자열을 닫아야합니다.

+0

"작업 완료 후 모든 연결을 닫는다"는 의미라고 생각합니다. – Germstorm