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

웹서비스를 구현했는데 잘 작동하다가 한번씩 커넥션 풀이 초과되었다는 오류로
서비스가 되지 않을때가 있습니다. 커넥션은 분명히 하나이고 웹서비스 코드에서는
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]

... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...
NoWriterDateCnt.TitleFile(s)
642조성택5/10/20079911스레드와 WinINet? [1]
641한귀순5/8/20078872Code Obfuscate 에 관한 질문. ^^ [2]
640박희진5/7/20078464스마트 클라이언트에서 ActiveX 브라우저 컨트롤을 사용한 경우 javascript 문제 [1]
639김재영5/3/200715574webBrowser클래스에서 띄워지는 Javascript 오류 다이얼로그를 감지할 수 있습니까? [2]
638최민규4/29/20079348SmartPhone / PDA 등에서의 .NET Smartclient [1]
636라이프가드4/27/20079991Insert 오류입니다. CLOB ........ [1]
635박희진4/27/200710451스마트클라이언트 위로 DIV가 못올라오고 스마트 클라이언트 뒤로 숨는 현상 [1]
632해운대끓...4/23/20078921이전에 소개 되었던 확장 매서드 아티클을 읽고 생각나는 의문 [1]
620이방은4/18/200710910질문있어요.. [2]
6196/17/200710211Child Form 에서 Mdi Form 의 메소드 Access 방법 [1]
616김우정4/15/200712703CAS 보안설정을 위한 ActiveX 관련 질문입니다 [2]파일 다운로드1
614박성희4/13/20079538IE Embedded된 스마트클라이언트로 로그인 정보를 보내려면 어떻게 해야 되나요? [2]
612김성헌4/11/200712149Vista, ShellExecute(,"runas",) 문제 [1]
611탑~4/10/20079204페이지 치고 들어가는거 막기... [2]
606한귀순4/3/20079439combobox usercontrol [2]
604채영사랑3/29/20079810<질문> System.Runtime.InteropServices.COMException: 개체가 필요합니다. [2]
603근바이3/28/20079235솔루션 -> 구성관리자 [1]
602김성헌3/27/20079475ActiveX 브로커 모듈과 통신방법은 RPC ??
607정성태4/4/200711207    답변글 [답변]: ActiveX 브로커 모듈과 통신방법은 RPC ??
601엔틱스3/22/20079239자동 로그인의 궁금증 [1]
600창민이3/16/200712067ATL 동적조회 관하여... [2]파일 다운로드1
597ygso...3/14/20078857단순 무식한 궁금증.. [1]
596조빵3/14/20079075SmartClient로 사용자PC의 엑셀을 실행시킬수는 없나요? [1]
594ygso...3/13/20079458ClickOnce를 이용하여 SmartClient를 배포할경우.. [2]
589김희택3/2/20078684리소스 추가 방법에 대한 아티클을 보던중에 질문요... [1]파일 다운로드1
588이성진2/24/200710780웹 -> 스마트클라이언트 -> 웹서비스 의 세션 공유 방법 ? [1]
... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...