Microsoft MVP성태의 닷넷 이야기
웹서비스 커넥션 풀 오류입니다. [링크 복사], [링크+제목 복사],
조회: 12286
글쓴 사람
이상식
홈페이지
첨부 파일
 

웹서비스를 구현했는데 잘 작동하다가 한번씩 커넥션 풀이 초과되었다는 오류로
서비스가 되지 않을때가 있습니다. 커넥션은 분명히 하나이고 웹서비스 코드에서는
finally 구문에 커넥션을 닫는 코드가 있는데도 이런 오류가 납니다.
무엇이 문제일까요?

<웹서비스 설명 요약>
1. 서버환경 : .net framework 2.0
2. DB : MS-SQL2000
3. 용도 : SAP ERP모듈에서 .NET 웹서비스를 호출. MS-SQL2000의 테이블을 조회, 입력, 수정용
4. 오류내용:
System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connnection
from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owingConnection)
at System.Data.ProviederBase.DbConnectionClosed. OpenConnection(DbConnection outerConnection, DbConnectionFactory connection Factory)
at System.Data.SqlClient.SalConnection.Open()
at WebService.GetData(SelectInputParams input)
5. GetData()
{
   try
   {
   ...
   connection.Open()
   SqlDataAdapter adapter = new SqlDataAdapter("select * from table", connection);
   ...
   }
   finally
   {
   connection.close();
   connection.Dispose();
   }
}
6. 참고사항
웹서비스가 빈번이 호출되고, 어떤 경우는 쿼리시간이 꽤나 오래 걸리기도 합니다.








[최초 등록일: ]
[최종 수정일: 7/12/2013]


비밀번호

댓글 작성자
 



2013-07-12 05시23분
잦은 호출과, 쿼리 시간이 오래 걸린다는 것으로 봐서는 분명히 풀이 모자란 것은 맞는 것 같습니다. 연결 문자열에 기반한 .NET DB 연결 풀의 기본 최대 치는 100 개입니다. 즉, 해당 서비스에서 동시에 100개가 실행되는 상황이 발생하는 것으로 보입니다.
정성태
2013-07-12 07시26분
[ryujh] 안녕하세요.

웹서비스가 빈번히 호출되는 것은 SAP ERP 에 달려있으니 이것은 수정이 어렵다고 보면

웹서비스에서 쿼리 호출은 어떻게든 수정할 수 있을 겁니다.

웹서비스에서 GetData() 를 단 한번만 호출하고 결과 리턴하는 것인지요?
GetData() 에서 쿼리를 한번만 호출하는지요?
혹시나 for 문 등의 반복문 내에 쿼리를 실행하고 있지 않는가요?

내용으로는 쿼리 호출방법을 알 수 없어서 이렇게 가정하고 질문합니다.
일단 횟수부터 줄여야 할 것입니다.

이상입니다.

[guest]
2013-07-12 08시54분
[이상식] 우선 두 분 답변 감사드립니다.

* 정성태님 : 제가 이해하는 커넥션 풀의 수는 서로다른 연결문자열의 수로 알고 있는데요.
예를 들면 현재 웹서비스의 접근하는 연결 문자열이 아래와 같다면
A : "Data Source=xxxx.xxxx.xxxx.xxxx;Initial Catalog=DB_A;User ID=userA;..."
A' : "Data Source=xxxx.xxxx.xxxx.xxxx;Initial Catalog=DB_A;User ID=userA;..."
B : "Data Source=xxxx.xxxx.xxxx.xxxx;Initial Catalog=DB_B;User ID=userB;..."
커넥션 풀은 2이지 않은가요?(A, A'은 같은 연결 풀. 연결문자열이 동일함.)
현재 웹서비스에서 사용되는 연결 문자열은 단 하나이거든요. 그래서 어떻게 100개가
초과되는지 이해가 되지 않네요. 커넥션 풀의 개념을 제가 잘 못 이해하고 있나요?

* 손님 : GetData()에서 반복문으로 쿼리를 호출하지는 않고있습니다. 단일 쿼리문을 그냥 실행시킬뿐입니다.
다만 GetData()를 연속해서 여러번 호출할 수는 있습니다. 그리고 반복문이 GetData() 내부에 있긴한데, 이것은 반환된 결과값(DataSet)을 이용해 특정한 형태의 xml로 만드는 작업에 사용됩니다.
[guest]
2013-07-15 12시05분
[ryujh] 안녕하세요.

커넥션이 늦게 열리고 빨리 닫혀야 풀에 있는 커넥션 수가 적어질 것인데
쿼리가 오래걸려서 커넥션이 늦게 닫히지 않는지 생각됩니다.


이상입니다.

[guest]
2013-07-15 01시10분
커넥션 풀은 "고유 연결 문자열 당" 기본적으로 최대 100개로 잡혀 있습니다. 웹 서비스에서 사용하는 연결 문자열이 하나라면 DB를 동시에 100개까지만 연결할 수 있는 것입니다. 100개가 초과되는지 이해가 안간다는 것은... 어떤 이유에서 그런 건지 혹시 물어봐도 될까요? ^^ 모니터링을 해보신 것인지?
정성태
2013-07-15 11시04분
[이상식] [ryujh] : 그럴 수 있겠군요. 확인해보겠습니다. 감사합니다.
[정성태님] : 아... 풀의 개념이 그런거였군요. 동일 문자열이 '종류' 하나라서 백개가 될 수 없다고 생각했습니다. 감사합니다.
[guest]

... 46  [47]  48  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
3667김치사발면12/15/201510787템플릿 설정 추가 질문 [1]파일 다운로드1
3666노태현12/15/201510197사용자별로 권한을 주고 볼 수 있는 데이터를 제한하려면 어떤 방법으로 접근하는게 좋을까요? [2]
3665김치사발면12/14/201513291C# 템플릿 설정이 이상해요ㅜㅜ [3]파일 다운로드1
3664KuLu12/10/201510581멀정하던 사이트 중 일부메뉴가 응답없음이 되어버립니다. [3]
3663Sung...12/10/201511982UWP 서버 프로그래밍 작업 중 [5]
3662Sung...12/9/201511815uwp앱에서 접속한 클라이언트 주소값을 받아서 표시하고 싶은데 어떤 메소드를 써야 할까요? [7]
3661김무진12/9/201511173Oracle 환경에서 데이터를 조회할때 한글이 ? 이렇게 표시가됩니다. [1]
3660질문자12/7/201513104OpenFileDialog 호출시 hang걸리는 문제 [4]
3659Sung...12/4/201512742UWP 앱에서 textBox로 클라에서 받은 값을 나타내고 싶은데 안되고 있습니다. [5]
3658강준12/3/201511988Visual Studio (Xamarin) vs Eclipse [2]
3656DEVY...12/1/201510893MasterPageFile 사용시 다국어 처리 질문입니다. [1]
3653DEVY...11/26/201512344ds:Signature 질문입니다. [7]
3654윤용한11/27/201512096    답변글 [답변]: ds:Signature 질문입니다. [3]
3657윤용한12/1/201514364    답변글 [답변]: ds:Signature 질문입니다. [1]
3651노태현11/20/201545081MariaDB - ASP.NET오류의 원인조차 못 찾고 있습니다.. [2]파일 다운로드2
3652노태현11/20/201511955    답변글 [답변]: MariaDB - ASP.NET오류의 원인조차 못 찾고 있습니다.. [3]
3649kokon11/17/201512360예제 파일 실행이 안 되네요 [5]
3647Sang...11/15/201510855Part 3 목차? [5]
3646힘찬도약11/13/201515695c# mscorlib System.IO IOException [8]파일 다운로드2
3644힘찬도약11/11/201514836c# user.config파일 [2]
3645spow...11/13/201511824    답변글 [답변]: c# user.config파일 - Json.NET을 이용한 설정파일 처리 [1]파일 다운로드1
3643힘찬도약11/11/201513641C# 함수의 processing time과 재호출 [14]
3642.net11/10/201512316c# 으로 작성된 com+ 에 대한 문제입니다. [2]
3641힘참도약11/9/201512742c# log file 관련해서 질문드립니다. [5]
3638윤창선11/4/201513316사설IP가 부여된 무선라우터간 영상전송 관련 문의 [8]
3634Hyun...11/2/201510888c# 에서 webkit browser에서 webgl을 이용하는 사이트에 접속이 안됩니다. [1]
... 46  [47]  48  49  50  51  52  53  54  55  56  57  58  59  60  ...