728x90
#1. 오라클 SR
안녕하세요 #1. MinThreadPoolSize 와 ExecuteThreadTotalCount 는 의미가 다릅니다. MinThreadPoolSize 는 Idle Thread + Active Thread 수로 유지합니다. ExecuteThreadTotalCount 는 Active Thread + Standby Thread + Idle Thread + Stuck Thread 라고 보시면 됩니다. #2. Active Thread 는 다음 문서의 공식대로 구하실 수 있습니다. How To Get Active Execute Threads ( Doc ID 2348749.1 ) You can calculate "Active Execute Threads" from ExecuteThreadTotalCount - StandbyThreadCount - ExecuteThreadIdleCount - StuckThreadCount in ThreadPoolRuntime. |
> 오라클 답변으로는 공식 문서 상의 Active Thread 산정하는 방법이 총 스레드 개수(ExecuteThreadTotalCount) – 유휴 스레드 개수(ExecuteThreadIdleCount)가 아닌 것으로 확인 됩니다.
문서 상에서 실제로 ExecuteThreadTotalCount에는 Active Thread와 대기 스레드, 유휴 스레드, 스턱 스레드의 합이기 때문에
Active Thread를 정확하게 산정하기 위해서는 아래와 같은 공식이 나옵니다.
(* Active Thread = ExecuteThreadTotalCount – Standby Thread – Idle Thread – Stuck Thread)
#2. 테스트 결과
- WLSMonitor.py
def monitor_thread(): cd('/ThreadPoolRuntime/ThreadPoolRuntime') curTime = Date() eq_tc = get('ExecuteThreadTotalCount') eq_ic = get('ExecuteThreadIdleCount') eq_stc = get('StandbyThreadCount') eq_stk = get('StuckThreadCount') eq_prc = get('PendingUserRequestCount') eq_hrc = get('HoggingThreadCount') eq_crc = get('CompletedRequestCount') print '[THREAD]-------------------------------------------------------------------------------------------------------------' #print curTime #print '%9s\t%11s %11s %11s %11s %11s %11s %11s' % ('ServerName ','TotalThread',' ActiveThread','IdleThread','Standby','Pending','Hogging','Complete') print curTime print '%9s\t %11s %11s %11s %11s %11s %11s %11s %11s' % ('ServerName','TotalThread',' ActiveThread','IdleThread','Standby','Stuck','Pending','Hogging','Complete') print '%9s\t %11d %11d %11d %11d %11d %11d %11d %11d' % (serverName,eq_tc,(eq_tc-eq_ic-eq_stc-eq_stk),eq_ic,eq_stc,eq_stk,eq_prc,eq_hrc,eq_crc) |
> 위와 같이 Active Thread 설정을 앞서 말씀드린 공식으로 대입 하고 Jmeter를 사용하여 부하를 주었습니다.
* 부하 주고, 스레드가 총 스레드가 100개에서 115개로 늘어난 상태에서 1시간이 지나고 Active Thread 값 모니터링…. 1) 오라클 가이드의 공식을 사용하였을 경우 ###################################### # Interval # # 10 seconds .... # ###################################### [JVM]----------------------------------------------------------------------------------------------- ServerName FreeMem% FreeMem UsedMem TotalMem testM1 40 812M 1181M 1994M [THREAD]------------------------------------------------------------------------------------------------------------- Wed Jan 26 10:33:02 KST 2022 ServerName TotalThread ActiveThread IdleThread Standby Stuck Pending Hogging Complete testM1 115 2 99 14 0 0 1 748565 2) 기존에서 쓰던 공식(ExecuteThreadTotalCount - ExecuteThreadIdleCount)을 사용하였을 경우 ###################################### # Interval # # 10 seconds .... # ###################################### [JVM]----------------------------------------------------------------------------------------------- ServerName FreeMem% FreeMem UsedMem TotalMem testM1 40 812M 1182M 1994M [THREAD]------------------------------------------------------------------------------------------------------------- Wed Jan 26 10:33:07 KST 2022 ServerName TotalThread ActiveThread IdleThread Standby Stuck Pending Hogging Complete testM1 115 16 99 14 0 0 1 748595 |
> Min-pool 101개에서 설정하고 부하를 줬을 때 TotalThread 값이 115개로 증가함. 증가한(14) TotalThread값이 다시 줄어드는게 아니라 Standby Thread로 책정되기 때문에
L사에서 사용하는 공식을 사용할 경우 늘어난 만큼의 Thread 개수가 Standby로 들어가서 그만큼의 차이가 재기동 전까지는 계속해서 발생하는 것입니다.
고로 정확한 Active Thread를 산정하기 위해서는 오라클의 공식문서에 나온 공식을 사용하셔서 적용하시면 될 것 같습니다.
728x90
'오라클 > WebLogic' 카테고리의 다른 글
WAS file encoding(Character) (0) | 2022.10.26 |
---|---|
[WLS] 웹로직 데이터소스에 대하여(MDS/RAC 구성 테스트 등) (0) | 2022.01.26 |
[WLS] WebLogic 12c WLST를 이용한 모니터링 (0) | 2022.01.25 |
[WLS] WebLogic과 Oracle DB 19c Certification (0) | 2022.01.19 |
[WLS] EAR의 웹 모듈 간 세션 공유 테스트 (0) | 2021.11.26 |