2013-09-22 5 views
0

Java/Java EE에서 개발 된 웹 애플리케이션이 백엔드의웨어 하우스에 연결되어 있습니다. IBM WAS가 어플리케이션 서버로서 데이터베이스 연결을 위해 정의 된 데이터 소스가 있습니다. 연결 풀은 최대 풀 크기 30으로 설정됩니다. DB 쿼리가 최대 1-2 분이 걸릴 수 있으므로 프런트 엔드에서 사용자가 대기하는 경우가 여러 번 있습니다.IBM WAS : 최대 병렬 DB 연결

40 명의 동시 사용자가 백엔드에서 1-2 분이 걸리는 쿼리를 실행하는 화면에 액세스 할 때 어떤 상황이 발생합니까?

  1. WAS 설정에 따라 DB에 최대 30 개의 연결이있을 수 있습니다. 맞습니까?
  2. DB 연결이 처리를 끝내고 풀에 연결을 반환 할 때까지 기다립니다. 그래서 큐에있는 다음 요청에 을 할당 할 수 있습니까?

답변

0

불행하게도 나는 WebSphere를이 상황에서 어떻게 작동하는지 대답 할 수 있지만 DB의 지연 기능을 사용하여 쿼리를 모방 시도 할 수 있습니다 :

TSQL :

--wait for 1 minute 
WAITFOR DELAY '00:01' 

오라클 :

DBMS_LOCK.sleep(seconds => TIME_); 

등등.

그러면 apache jmeter (http://jmeter.apache.org/)를 사용하여 사용자 요청을 에뮬레이트 할 수 있습니다. 다양한 요청, 청취자 등이 있습니다.

Websphere 관리 콘솔에는 모니터 및 튜닝이 있으며 데이터 소스 및 http 요청 풀 활동에 대한 자체 모니터를 구성 할 수 있습니다.

이렇게하면 애플리케이션의 병목 현상을 디버깅 할 수 있습니다.

0

결과는 다음과 같습니다. 30 연결이 처리 상태가되고 다른 연결은 대기 상태가됩니다. 처리 연결 중 하나가 데이터 소스로 되돌아 가면 대기 연결 중 하나가 작업을 시작합니다.

+0

입력 해 주셔서 감사합니다. DB와 상호 작용하는 공개 웹 사이트에 대한 후속 질문. 이러한 과중한 동시로드를 처리하기 위해서는 트랜잭션이 매우 짧은 트랜잭션과 함께 거대한 연결 풀이 있어야합니다. – Allzhere

+0

간혹 데이터베이스 스키마를 재 설계하거나 신중하게 데이터베이스 쿼리를 보는 것이 유용합니다. 거대한 연결 풀은 악하지 않습니다. 모두는 서버 부하에 따라 다릅니다. –