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

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

... 31  32  33  34  35  36  37  [38]  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4938김성대1/3/201815791채팅 프로그램관련 질문입니다. [9]파일 다운로드1
4937Ques...1/3/201817904C# CPU 사용량 한계치 늘리는 방법 [2]
4936무개1/3/201815071책 내용 인용하는 것에 관한 질문이있습니다. [1]파일 다운로드1
4935몬난아12/28/201717853IIS 및 ASP.NET 이 서버에서의 동작방식? [2]
4934Ques...12/26/201729161C# 해상도에 따른 자동 사이즈 조절방법이 궁금합니다. [3]
4933Kay12/15/201715315C# VS 버전 에러 질문 드립니다. [1]파일 다운로드1
4932정환나라12/13/201715670vs2013에서 빌드한 com 컨트롤 객체를 닷넷 2.0에서 사용하려 합니다 [4]
4931Arvid12/12/201716328Visual Studio 2012 c# using문 참조 에러 [5]파일 다운로드1
4929김성대12/8/201714496app.config에 관한질문입니다. [1]
4928김성대12/7/201715431SQL Server 설치에러에 대한 질문입니다. [1]파일 다운로드1
4926heyh...12/6/201714466[삭제] ContextSwitchDeadlock????
4925ho12/5/201715068[삭제] WebBrowser로 드롭박스 로그인 페이지 탐색 시 발생한 문제에 대해 질문 올립니다.파일 다운로드2
4924몽중언12/3/201715476C# 디버깅 모드에서만 DB Insert가 되는 현상 질의 [6]
4923고요한11/23/201715626파일 확장자에 연결된 프로그램을 등록하는 방법에 대한 질문입니다. [2]
4922박성훈11/23/201717044시작하세요! C# 7.1 학습 방법 [3]
4921초보개발자11/20/201713811[삭제] 폼 사이즈 질문드립니다.
4920Ques...11/19/201714591IEnumerable 의 "지연된 평가" 에 관하여 질문드립니다. [2]파일 다운로드1
4919mskim11/16/201715281Split()을 이용하여 문자 구분 시 구분문자도 같이 저장하는 방법이 있나요? [2]
4917ho11/16/201715766WPF XAML 트리거 관련해 문의 드립니다. [3]
4918ho11/16/201716391    답변글 [답변]: 예제 프로젝트 첨부합니다. [4]파일 다운로드2
4916필승11/11/201715916기본 웹 브라우저 체크는 어떻게 해야 하나요? [2]
4915필승11/10/201715067WebBrowser 컨트롤 소리 출력 문의 드립니다. [2]
4914Ques...11/10/201715748c# 버튼 이벤트에 관하여 질문드립니다. [2]
4913Arvid11/8/201718597Log4Net 라이브러리를 이용하여 특정 기간이 지났을 때 자동 로그 삭제 기능 구현 질문 드립니다! [2]
4912조범희11/8/201718159C# FTP 다운로드중 에러 발생.. [2]파일 다운로드1
4911필승11/6/201716513WebBrowser 컨트롤 사용법에 대해 궁금합니다. [2]
... 31  32  33  34  35  36  37  [38]  39  40  41  42  43  44  45  ...