웹 서버로 WebLogic을 사용하는 사이트를 관리하게 되었는데
초기 세팅에 대한 포스팅을 쓰기도 전에...
모니터링 페이지에서 유심히 보게 되는 페이지가 있어서 먼저 정리할 겸 써보도록 한다.
WebLogic에서 제공하는 모니터링 페이지에서 관리할 수 있는 메뉴는 다음과 같다.
모니터링 메뉴명 |
관리내용 |
특이사항 |
일반 |
서버에 대한 일반 런타임 정보 제공. 서버 활성화 시간, WebLogic Version, JAVA Version, OS Version 등 구동환경에 대한 정보 일체 |
|
건전성 |
서버 건전성 정보와 하위 시스템별 상세 건전성 정보를 제공한다. |
서버 건전성이 정상 상태가 아닌 경우 해당 원인을 간단하게 표시함 |
채널 |
서버에서 접속가능한 채널별로 수신/전송 메시지 수와 바이트 정보를 확인할 수 있음 |
|
성능 |
서버 성능을 나타냄. Java 가상 시스템 메모리 사용 통계를 확인 가능 JVM Heap 정보를 주로 보여줌. |
불필요한 정보 수집 또는 스레드 덤프를 강제로 수행할 수 있음 |
스레드 |
스레드 활동 정보 제공. 스레드 풀 상태에 대한 일반적인 통계와 개별 스레드 상세 내역 확인 가능 |
스레드의 수명주기별 상태 확인 가능 |
타이머 |
서버에서 사용중인 타이머의 정보 표시 |
|
작업 부하 |
서버에 구성된 작업 관리자, 제약 조건 및 요청 클래스에 대한 통계 확인 |
보류중인 요청, 완료된 요청 확인 가능. 스레드 최소/최대 제약조건 표시. |
작업 |
예약된 작업 스케줄 확인 가능 |
|
보안 |
사용자 잠금 관리 통계 모니터링. 부적합한 로그인 횟수, 잠금 발생 총 건수, 잠금 기간 동안의 로그인 시도 횟수, 부적합 로그인 최대 수, 잠긴 사용자 수, 잠금 해제된 총 사용자 수 |
허가되지 않은 로그인 확인이 가능하며 접근 인가자가 아닌 대상자 확인이 가능 |
기본 저장소 |
기본 저장소에 대한 런타임 통계 확인 상세내역 확인 가능 (deploy, transaction, wsee 등) |
생성수, 읽기수, 갱신수, 삭제수, 실제 읽기 수, 할당된 창 버퍼 바이트, 할당된 I/O 버퍼 바이트 표시 |
JMS |
활성화 된 모든 JMS 접속에 대한 통계 확인 (JSM 접속 : 메시징 시스템에 열려있는 통신 채널) |
|
SAF |
모든 SAF 에이전트에 대한 통계 (SAF : Store and Forward) |
|
JDBC |
JDBC 데이터 소스와 연관된 통계 표시 연결된 JDBC와 상태, 평균/현재/최대 접속수 표시 |
|
JTA |
서버의 모든 리소스 유형에 대한 모든 트랜잭션 정보에 대해 요약하여 표시 |
트랜잭션 정보 다수 탭으로 구성 |
모니터링에만 이렇게 많은 메뉴를 제공한다.
이렇게 많으니 정말 정리하느라 힘들어 좋군요
우선 지금 소개하기로 한 스레드 정보에서는 실제 업무를 수행하는 스레드 정보를
표시하게 되는데, 전체적인 통계와 더불어 상세 스레드 정보도 확인할 수 있습니다.
스레드 정보는 스레드의 생명 주기를 기준으로 분류하여 표시하게 되므로
생명주기(Life Cycle)에 대한 내용도 아주 잠깐 얘기하고 넘어가자.
1. 신규 생성 (NEW) : 스레드 생성되었으나 실행되지 않은 상태
2. 실행 (RUNNABLE) : 실행중인 상태, CPU 사용
2-1) BLOCKED : 다른 스레드가 걸어둔 Lock 해제를 기다리는 상태
2-2) WAITING : 의도적으로 스레드의 대기상태를 지시한 상태
2-3) TIMED_WAITING : 의도적으로 스레드의 대기상태 지시로 대기중임. 최대 대기시간이 지정되어있음.
3. 중단 (TERMINATED) : 스레드 종료
< 출처 : http://blueyikim.tistory.com/38 >
기본적인 스레드 생명주기와 유사하게 WebLogic의 스레드 상태도 구분되어있다.
1. 유휴 (Idle Threads) : 대기중인 스레드, 요청하면 처리 가능한 스레드
2. 실행 (Active Threads) : 요청을 처리중인 스레드. CPU 사용.
3. 대기 (Standby Threads) : Sleep 상태로 요청을 처리하지 않고 있는 스레드.
4. 호깅 (Hogging Threads) : 요청 처리에 시간이 오래 소요되는 스레드, Stuck Thread 직전의 상태로 보면 됨
5. 막힘 (Stuck Threads) : 작업 최대 시간보다 더 오랫동안 요청을 처리하고 있는 스레드. 이로 인해 데드락 발생 가능
: 기본적으로 작업 최대 시간은 600초로 세팅되어있음
유휴 스레드와 대기 스레드는 둘 다 아무 요청에 대해 처리하지 않고 있다는 공통점이 있지만
실행 가능한 스레드이지만 작업이 지정되지 않으면 유휴 (Idle Thread)
실행 스레드가 활성 스레드 풀 안에 포함되어있지 않으면 대기 (Standby Thread) 로 구분된다.
-> 활성 스레드는 결국 유휴 스레드와 실행 스레드의 합계로 표현된다. (대기는 활성 스레드에 포함되지 않으므로)
일반적으로 다음과 같은 Life Cycle로 진행된다.
정상적인 진행 : Standby -> Active -> Standby
작업지연 시 진행 : Standby -> Active -> Hogging
작업 시간 초과 시 진행 : Standby -> Active -> Hogging -> Stuck
Stuck 상태 해제 시 진행 : Standby -> Active -> Hogging -> Stuck -> Standby
< 출처 : http://rajalo.tistory.com/entry/WLS-Thread-Health-State >
Hogging Thread에 대해서 계속 대기하는 상태로 있기 때문에 해당 Thread는 Kill 해줘야 한다.
이를 해결하기 위한 기능으로 WebLogic에서는 Thread Dump 기능을 제공한다.
이에 대해서는 별도로 정리하도록 하겠... 하고싶다.