2010. 1. 25. 17:47
[JDBC] WebLogic Data Source Monitoring WebLogic/JDBC2010. 1. 25. 17:47
WAS에 배포된 애플리케이션들이 DB작업을 하는데 있어서 WAS 제품에 의해 제공된 커넥션 풀의 상황에 대한 모니터링을 해준다.
웹로직 서버에 배포된 애플리케이션들은 제공되는 Data Source를 가지고 DB에 접근하게된다.
Data Source는 커넥션 풀을 가지고 있으며, ....
==============================================================================
다양한 문제 사례
==============================================================================
1. 특정 서버에 대한 cpu 사용률이 다른 서버에 비해 월등히 높다. (모든 서버가 동일 업무처리)
접근키워드: 특정 서버, cpu 사용률
특정 서버가 문제가 되는것은 WAS 앞단에서 전달을 잘못했다.
cpu 사용률이 높아지는 업무에는 DB, ...등이 있다.
2. 쓰레드는 놀고있는데 현재 사용중인 DB connection은 너무 많다.
접근키워드:
쓰레드가 놀고있다. -> 부하는 그리 많지 않다. 또는 부하가 있더라도 처리가 빨리되서 쓰레드가 빨리 반납된다.
DB connection이 너무 많다. -> 실제 DB업무가 많다. 또는 쓰지도 않으면서 커넥션만 맺어져있다.
관리자는 Data Source에 대한 모니터링을 통해 뭘 할 수 있을까?
쓰레드와 Data Source 모니터링을 통해 쓰레드와 커넥션의 개수를 산정한다.
connection leak이 발생하는 것을 추측할 수 있다.
쓰레드는 놀고 있는데, connection 사용량이 생각보다 많다면 connection leak을 예상할 수 있다.
정확하게 connection leak 여부를 판단하기 위해서는 다음의 두가지가 필요하다.
inactive connection timeout값 설정
profiling connection leak 옵션 enable
만약 connection leak이 발생하면 weblogic server log에 connection leak이 감지되었음을 알리는 로그가 남게된다.
Data Source와 Data Source를 사용하는 서버 인스턴스별로 아래 항목이 각각 보여지게 된다.
동일한 Data Source에서 Active Connections Average Count가 특별하게 높은 서버 인스턴스에 대해서
해당 서버가 해당 DS(Data Source)를 처리하는 업무가 많다. (DB 접근 업무가 많다)
만약 3대의 서버가 동일 업무를 처리하는데 특정 서버의 Active Connections Average Count가 높다면,
앞단의 L4, 웹서버등의 로드밸런서(부하분산기)가 부하분산을 제대로 못했거나 재수없게 DB 업무가 해당 서버에 몰린다고 볼 수 있다.
DataSource 모니터링 화면의 항목 | 자료형 | 한글 설명 |
Server | 고정값 | DataSource가 배포되어 있는 Server명 |
Active Connections Average Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Active Connection의 평균값 - Avg(Active Connections Current Count) |
Active Connections Current Count | 현재 조회값 | 현재 사용 중인 Connection 개수 |
Active Connections High Count | 기동후 최대값 | 기동 후부터 조회한 시점까지의 Active Connection의 최대값 - Max(Active Connection Current Count) |
Connection Delay Time | 기동후 누적값 | millisecond 단위로 DB와의 물리적인 연결하는데 걸린 평균 시간값 - Avg(DB Connection 연결 시간들) |
Connections Total Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 DB Connection이 생성된 총횟수 - Sum(Create DB Connection) |
Current Capacity | 현재 조회값 | 현재 연결되어 있는 DB Connection 개수 |
Curr Capacity High Count | 기동후 최대값 | 기동 후부터 조회한 시점까지의 Current Capacity의 최대값 - Max(Current Capacity) |
Enabled | 고정값 | DataSource의 Enabled/Disabled의 상태 |
Failed Reserve Request Count | 기동후 누적값 | 해당 DS에서 요청을 받았지만 수행되지 못한 누적 수 |
Failures To Reconnect Count | 기동후 누적값 | 해당 DS가 DB Connection refresh를 시도해서 실패한 수. DB가 unavailable 이거나 DB로의 network connection이 원활하지 않은 경우 refresh가 실패할 수 있음 |
Highest Num Available | 기동후 최대값 | 기동 후부터 조회한 시점까지의 Num Available의 최대값 - Max(Num Available) |
Leaked Connection Count | 현재 조회값 | close()하지 않은 누수된 Connection 개수 |
Num Available | 현재 조회값 | 현재 사용할 수 있는 DataSource 개수 |
Num Unavailable | 현재 조회값 | 현재 사용할 수 없는 DataSource 개수 |
PrepStmt Cache Access Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Statement Cache에 Access한 총횟수로 각 Connection마다의 Access한 횟수의 총합계 |
Prep Stmt Cache Add Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Statement Cache에 Add한 총횟수로 각 Connection 마다의 Add한 횟수의 총합계 |
Prep Stmt Cache Current Size | 현재 조회값 | 기동 후부터 조회한 시점까지의 각 Connection의 Statement Cache의 크기의 총합계 |
Prep Stmt Cache Delete Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Statement Cache에 Delete한 총횟수로 각 Connection 마다의 Delete한 횟수의 총합계 - Statement Cache가 full 상태에서 새로운 Statement를 Add하려고 할 때 Statement Cache Delete가 발생함 |
Prep Stmt Cache Hit Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Statement Cache의 해당 Statement가 있었던 총횟수 |
Prep Stmt Cache Miss Count | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Statement Cache의 해당 Statement가 없었던 총횟수 |
Reserve Request Count | 기동후 누적값 | Connection을 요청한 총 횟수 |
State | 현재 조회값 | DataSource의 상태 : Running/Suspended/Shutdown/Unhealthy/Unknown |
JDBC Driver | 고정값 | JDBC Driver명 |
Wait Seconds High Count | 기동후 누적값 | connection 을 얻기 위해 가장 오래 기다린 시간 |
Waiting For Connection Current Count | 현재 조회값 | 현재 Connection을 얻기 위해서 기다리고 있는 개수 |
Waiting For Connection Failure Total | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Connection을 받기 위해서 기다렸으나 Connection을 얻지 못한 횟수의 총합계 - Sum |
Waiting For Connection High Count | 기동후 최대값 | 기동 후부터 조회한 시점까지의 Connection을 받기 위해서 기다렸던 횟수의 최대값 - Max(Waiting For Connection Current Count) |
Waiting For Connection Success Total | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Connection을 받기 위해서 기다리고 성공적으로 Connection을 얻은 횟수의 총합계 |
Waiting For Connection Total | 기동후 누적값 | 기동 후부터 조회한 시점까지의 Connection을 받기 위해서 기다렸던 횟수의 총합계 |
'WebLogic > JDBC' 카테고리의 다른 글
[weblogic] multi data source vs ctf(connection time failover) (0) | 2010.01.26 |
---|---|
[JDBC] java.sql.SQLException: Connection has already been closed (0) | 2010.01.25 |
[JDBC] servelt + JDBC 연동 개발 가이드 (0) | 2010.01.25 |
[JDBC] inactive connection timeout (1) | 2010.01.25 |
JDBC connection leak (4) | 2010.01.25 |