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

웹서비스를 구현했는데 잘 작동하다가 한번씩 커넥션 풀이 초과되었다는 오류로
서비스가 되지 않을때가 있습니다. 커넥션은 분명히 하나이고 웹서비스 코드에서는
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)
4693초보2/25/201615935카카오톡 오류 질문 [1]
3701강준2/19/2016253512개의 DataTable Join 결과 전체 컬럼을 DataTable 로 리턴하기 [5]
3700박성훈2/18/201617338시작하세요! C# 6.0 프로그래밍 105쪽 예제 질문 [1]
3699박성훈2/18/201616460공부 방향성 질문 [2]
3698강준2/16/201616655Entity Framework 에서 Select for Update 가 가능한가요??? [1]
3697ds2/16/201616418어느 정도 문법을 알고 나면 [6]
3695Bere...2/15/201619270호출당한 메서드가 호출한 메서드를 알 수 있는 방법이 일반적인 방법 말고도 있을까요? [2]
3693조영준2/11/201620288UWP 앱을 만들고 있습니다. 죄송하지만 몇 가지 질문 드립니다. [4]
3692후배2/8/201619939html/css/js를 이용한 winForm의 UI표현이 가능 한가요? [3]
3690김대석2/5/201617753문의 드립니다. [2]
3687허재영2/3/201619631web api 보안관련 질문입니다. [2]
3685조진우2/1/201619554메인 응용 프로그램에서 DLL을 실시간으로 접근하여 사용하는데 이것을 모니터링 할 수 있을 까요? [1]
3684나그네1/27/201618763안녕하세요..wcf 관련하여 질문있습니다. [4]파일 다운로드1
3683김태형1/25/201619260 안녕하세요 저작도서를 구매하려는데 한가지 문의 사항이 있어서 질문드립니다. [1]
3681이영균1/8/201622418IE브라우저 추가기능관리의 항목을 사용함으로 c#코드로 변경을 하려고 합니다. [8]
3680후배1/6/201621983추천할만한 소켓 라이브러리 있으신가요? [2]
3679초록물꼬기1/6/201620999Parallel.For 에서 동기화문제에 관한 질문입니다. [11]파일 다운로드1
3678김민우1/3/201619437IHS 오류에 대한 질문입니다. [2]파일 다운로드1
3677초록색우산12/31/201520868HTTP 통신 - WebClient 이용시 한글깨짐 현상 발생 [2]
3676서정열12/31/201519975안녕하세요 WebService SoapExtensionImporter 에 대해서 질문드립니다. [3]
3675차가워12/30/201518844윈폼, 폼인폼 상황에서 하위컨트롤 포커스 문제 [1]
3673Sung...12/24/201520060UWP예외 발생 : 'System.Runtime.InteropServices.COMException'(mscorlib.ni.dll) 해결방법 [2]
3672Sung...12/23/201518592global::System.Diagnostics.Debugger.Break();가 노랗게 표시될시 [2]
3671이상준12/22/201523427한글 키보드 입력에 대해서 질문이 있습니다. [3]
3670Sung...12/18/201519373UWP 주기적으로 신호를 보내고 클라이언트에서 신호가 오면 받는 프로그램을 하려고 합니다. [5]
3669다비드12/18/201518091인터넷 임시파일 삭제 관련 질문. [1]
... 46  [47]  48  49  50  51  52  53  54  55  56  57  58  59  60  ...