서버가 부하가 가중되면 가장 먼저 알아내야 하는것이 원인을 파악하는 것일 겁니다. 하지만 그러기 어려운 상황이라면 가장 먼저 파악해야 하는것이 CPU에서 오는 부하인지 I/O에서 오는 부하인지를 알아내야 할 것입니다.

우선 기본적으로 부하상태(Load Average)를 알아내기 위해 top, w, uptime의 명령어를 활용할 수 있습니다.

top




w



uptime


top > w > uptime 순으로 보여지는 정보의 양이 적어지는군요. top의 경우에는 실행중인 프로세스의 목록도 표시됩니다. 오늘 언급하려는것은 sar(System Activity Reporter)입니다. 매우 간단하게 부하를 분류하여 보여줍니다.





위의 시스템은 IO대기가 차지하는 비율이 70%에 육박하는 상태입니다. IO문제가 분명하군요. 보통 DB 서버들이 부하가 걸릴때 위와 같은 모습을 보입니다. 이 경우 메모리를 증설하면 디스크에 읽고 써야 하는 데이터를 그만큼 메모리에 올릴 수 있어 디스크의 IO를 현저히 줄일 수 있습니다.






메모리를 8G에서 16G로 증설한 후의 모습입니다. 정말 신기할 정도로 IO가 줄었네요. sar에서 자주 쓰이는 옵션으로는 다음과 같은 것이 있지 않을까 생각합니다.

-u : CPU 사용율 확인
-P : 특정 CPU의 사용율 확인 (sar -P 0)
-q : Load Average 확인
-r : 메모리 사용 현황 확인

sar는 sysstat 패키지에 포함되어있습니다. 다음과 같이 설치 가능합니다.