본문 바로가기

IT 라이프

JBoss EAP의 Datasource (DB Pool) 모니터링 및 최소값 설정 방법

반응형

 JBoss EAP의 데이터소스 (DB pool)의 사이즈 관련 설정에 대해 확인하다가 다소 특이한 점을 발견하였다. 별다른 생각 없이 min-pool-size를 설정하면 항시 최소 이 설정값만큼의 세션을 생성 후 유지할 것이라고 생각하였으나, 세션 확인 결과 생각과는 다르게 동작함을 확인하였다. 이에 관하여 기록을 남겨두고자 한다.

 

확인결과 요약

  • 특정 설정을 활성화하지 않으면 JBoss EAP의 min-pool-size를 셋팅해놓았어도 그 수 만큼의 세션이 생성되거나 유지되지 않을 수 있다.

JBoss CLI  도구를 통한 DB Pool 세션 확인 방법

 일단은 netstat을 통해서 확인하였을 때 세션의 갯수가 예상과 다른 수치를 보였고, 더 정확한 값을 확인할 방법이 필요했다. 제니퍼 등의 APM 도구를 활용하고 있다면 이를 활용하면 되겠지만, 그렇지 않기에 다른 방법을 찾아보았다. 그리고 JBoss EAP에서는 별도 CLI 툴을 제공하고 있었고, 이를 활용하면 DB Pool 의 세션을 모니터링할 수 있다는 사실을 알게 되었다. 그 사용법은 아래와 같다.

사용법

jboss-cli.sh이 있는 위치를 찾아 접근 후 아래와 같이 명령어를 실행시킨다. 컨트롤러를 오픈해놓은 IP 및 포트를 입력하고, 모니터링하고자 하는 데이터소스의 이름도 입력하여야 한다.

./jboss-cli.sh --controller=[CONTROLLER_IP]:[CONTROLLER_PORT] --connect --command="/subsystem=datasources/data-source=[DATASOURCE_NAME]/statistics=pool:read-resource(recursive=true,include-runtime=true)"

이 방법을 활용하여 체크를 해보니 역시 설정한 min 사이즈와 현저하게 다른 세션 갯수를 확인할 수 있었다.

(참고) 이 CLI 도구를 사용하면 데이터소스 외의 WAS 쓰레드 현황 등도 확인할 수 있다.

설정 값에 대한 세부 설명

 왜 이런 현상을 보이는지에 대해 원인을 알아보니 설정 상에 원인이 있었다. 실제 세션이 최소값만큼 생성되고 유지되게 하려면 pool-prefill 과 pool-use-strict-min 설정을 true로 설정해야 한다. 관련 설정에 대한 자세한 설명은 아래와 같다.

  • min-pool-size 가 명시되어 있어도 연결이 idle 상태에 있고 timeout에 도달하는 등의 상황이 발생하면 전체 커넥션 수는 일시적으로 최소값 이하로 내려갈 수 있다.
  • pool-prefill : 기본값은 false. 이 속성을 true로 설정해야, 기동 시에  min-pool-size 에 설정한 만큼 미리 커넥션 풀을 채워서 기동한다.
  • pool-use-strict-min : 기본값은 false. 이 값을 true로 설정하면, DB 커넥션이 설정된 min-pool-size 이하로 일시적으로라도 내려가지 않도록 강제한다.
  • idle-timeout-minutes : 설정된 시간이 지나면 설정된 최소값까지 커넥션을 종료한다.

 

 

반응형