본문으로 건너뛰기

DBMS 모니터링 : OS

CPU 사용량

시스템의 CPU 사용률 모든 항목을 그래프로 표시한다.

각 항목의 의미는 다음과 같다.

항목설명
UserDBMS가 사용 중인 CPU 사용률
NiceNice 우선 순위로 실행중인 DBMS의 CPU 사용률
System시스템 레벨(커널)에서 사용 중인 CPU 사용률
Iowait디스크 I/O 요청에 대한 처리 때문에 CPU가 사용하거나 Idle 상태인 사용률
Irq인터럽트를 처리하기 위해 사용하는 CPU 사용률
Softirq소프트웨어 인터럽트(Softirq)를 처리하기 위해 사용하는 CPU 사용률
Stolen가상화 환경에서 CPU 손실률
Idle사용하지 않는 CPU 퍼센트

메모리 사용률

시스템의 메모리 사용량과 Swap 사용량을 그래프로 출력한다. 전체 메모리와 현재 사용중인 메모리 크기와 설정한 전체 Swap 메모리 크기와 Swap 메모리 사용량을 표시한다. Swap 메모리는 Disk에 파일 시스템을 메모리로 사용하는 방식이다. 따라서, 시스템의 물리적 메모리가 갑자기 부족한 상황을 제외하고는 운영시스템에서 Swap 메모리를 사용하게 되면 시스템의 전체적인 성능이 크게 떨어지게 된다. OS상에서 실행되는 DBMS의 성능에도 큰 영향을 미치기 때문에 Swap 사용량을 확인하는 것이 좋다.

평균 로드

시스템의 평균 로드를 그래프로 표시한다.

항목설명
Short Term1분 동안 실행 대기중인 프로세스의 평균 개수를 의미한다.
Mid Term5분 동안 실행 대기중인 프로세스의 평균 개수를 의미한다.
Long Term15분 동안 실행 대기중인 프로세스의 평균 개수를 의미한다.

평균 로드(Load Average)가 높으면 시스템이 과부하 상황이라는 것을 판단할 수 있다. 만약 1 개 Core를 가진 시스템에서 평균 로드 1이 의미하는 것은 전체를 모두 다 사용하고 있다는 것이다. 대부분 시스템 관리자들은 평균 로드 0.7 이상이면 조만간 과부하 상황이 될 것이기 때문에 원인을 밝혀 문제를 해결하는 것이 좋다. 1.0이상이라면 당장 문제를 찾아내어 해결해야 한다. 5.0을 넘었다면 정말 심각한 상황이다. 이대로 두면 시스템이 행 걸리거나 상당히 느려지게 될 것이다.

멀티 코어 시스템에서는 평균 로드값은 가용한 코어 개수에 영향을 받는다. 100% 사용중이라면, 싱글 코어에서는 1.0, 듀얼코어에서는 2.0으로 표시될 것이다. 당연히, 코어 개수가 4개인 쿼드코어 시스템에서는 4.0이 된다.

또, 1분, 5분, 15분 평균값을 표시하기 때문에 싱글 코어 기준으로 15분 평균값이 1.0을 넘는다면 지속적인 과부하 상황에 있다는 것을 의미한다.

물론, Current 차트에서는 1, 5, 15분 평균값이 잘 표시되지만, History 차트에서는 시간, 수십분 단위의 평균 데이터를 표시하기 때문에 전체적으로 1, 5, 15분 평균값이 거의 비슷한 값이 표시된다.

현재 시스템의 CPU 및 Core 개수를 확인하는 방법은 ‘시스템 - 서버정보’에서 ‘CPU’ 항목을 확인한다.

디스크 사용량

시스템의 디스크 사용량을 각각의 파티션 별로 그래프로 표시한다. 전체 크기와 사용량을 표시한다. Byte 단위로 계산하여 사용량을 표시하기 때문에, 블록 단위로 표시하는 df가 출력하는 크기와는 약간 차이가 난다.

디스크 I/O 횟수

시스템의 개별 파티션 별 디스크 I/O 횟수를 Read / Write로 구분하여 표시한다.

디스크 I/O 사용량

시스템의 개별 파티션 별 디스크 I/O Bytes양을 Read / Write로 구분하여 표시한다.

디스크 평균 서비스시간

디스크의 평균 서비스 시간(ms) 은 디스크 Read/Write 요청을 처리하기 위해 평균적으로 얼마의 시간이 소요되었는지 표시한다. 이 시간에는 처리를 위해 큐에서 대기하는 시간은 포함되지 않는다. 서비스 시간이 10ms이하이면 양호한 값으로 판단할 수 있다. 20ms 이상이면 잠재적 병목으로 판단할 수 있다.

디스크 평균 대기수

Disk Write/Read를 위해 대기하는 평균 대기 요청 큐의 평균 크기를 그래프로 표시한다.

디스크 평균 파일로드수

파일 노드 수는 inode의 개수를 그래프로 표시한다. Inode는 유닉스 계열 파일 시스템에서 사용하는 자료구조로 파일, 디렉터리 등 파일 시스템에 대한 정보를 가지고 있다. 파일은 각각 1개의 inode를 가지게 되며, inode는 소유자 그룹, 접근 모드(읽기, 쓰기, 실행), 파일 형태등 파일에 관한 정보를 가지고 있다. 파일 시스템 내의 파일들은 고유한 inode 번호를 통해 식별하게 된다.

일반적으로 파일 시스템이 생성될 때, 전체 공간의 1%정도를 inode를 위한 공간으로 할당하게 된다. 사용할 수 있는 Inode의 개수를 다 사용하게 되면, 디스크 공간이 남아있더라도 더 이상 파일을 생성할 수 없게 된다. 한 디렉터리에 너무 많은 파일을 만들게 되면 Inode를 쉽게 소진하게 된다.

네트워크 TCP 연결상태

시스템 전체 Network TCP 연결 상태 정보를 그래프로 표시한다.

각각의 항목은 다음과 같다.

항목설명
LISTEN포트가 열려 있어 요청을 받을 수 있도록 연결 요청을 기다리는 상태
SYN_SENT로컬에서 원격으로 연결요청 신호(SYN)을 시도한 상태
SYN_RECV원격으로부터 연결 요청을 받은 상태 요청을 받아 SYN, ACK 신호로 응답한 상태이지만 ACK는 받지 못한 상태이다. SYN_RECV가 상당히 많다면 TCP SYNC Flooding 공격을 의심해 볼 수 있다.
ESTABLISHED서로 연결되어 있는 상태
FIN_WAIT1소켓이 닫히고 연결이 종료되고 있는 상태, 원격의 응답은 받을 수 있다.
FIN_WAIT2로컬 연결이 원격으로 부터 연결 종료 요청을 기다리는 상태
CLOSE_WAIT원격 연결 요청을 받고 연결이 종료되기를 기다리는 상태 원격으로부터 FIN, ACK 신호를 받고 ACK를 원격에 보낸 상태
TIME_WAIT연결은 종료되었지만 원격의 수신 확인 신호를 기다리는 상태 아파치에서 KeepAlive를 OFF로 한 경우에 이 값이 많이 표시된다.
LAST_ACK연결은 종료되었고 승인을 기다리는 상태
CLOSE완전히 연결이 종료된 상태
CLOSING연결은 종료되었으나 전송도중 데이터를 분실한 상태
UNKNOWN소켓 상태를 알 수 없는 상태

네트워크 트래픽

시스템의 네트워크 인터페이스 카드 별로 데이터 초당 Send/Receive 바이트 수를 그래프로 표시한다.

네트워크 전송 패킷

시스템의 네트워크 인터페이스 카드 별로 데이터 초당 Send/Receive 패킷 수를 그래프로 표시한다.

네트워크 패킷 오류

시스템의 네트워크 인터페이스 카드 별로 데이터 초당 패킷 오류수를 그래프로 표시한다.

패킷 오류나 Drop등이 발생한다면, 과도한 네트워크 부하가 발생하고 있을 확률이 높다. 네트워크나 운영체제의 커널 파라미터(네트워크 관련)등을 확인하는 것이 좋다.