윈도우에서 CTRL+SHIFT+ESC를 눌러보면 작업관리자가 뜬다. 리눅스에서 top 이란 명령어도 비슷하다. 한마디로 현재 실행되고 있는 프로세스나 메모리 상황 등을 감시할 수 있다. 중요한 것은 load average(오른쪽 상단)이다. 1,5,15 분을 의미하는 것이다. 이런 이야기는 다른 블로그에 많이 있으니 참고 바라고. 이 top 이 중요한 것은 현재 서버 자원을 실시간으로 볼 수 있고 이에 따라 서버에 부하가 걸렸을 땐 그에 맞는 즉각적인 대비를 하기 위함이다.

 

 2코어 이상일시 top 명령어를 치고 숫자 1을 누르면 코어별로 상황을 볼수 있다.(모르는 사람이 은근...)

 

 서버가 부하가 가해지고 있다는것은 어떻게 알수 있을까? 우선 간단히 보자. 

현재 저 그림에서 2코어이다. 그런데 만약 load average 가 2.00 이 되면 어떻게 해석되야 될까? 이는 코어 2개가 현재 사용률 100% 라는 이야기 된다. 만약 3.00 이라면 어떨까? 현재 코어 2개가 100% 사용 중임에도 불구하고 코어 하나가 더 처리해야 할 만큼의 작업이 밀려있다는것이다. 언젠가는 다 처리하겠지만. 그전에 데몬등이 뻗어 버릴수가 있다.(서버는 원래 넉넉히 자원을 잡아두어야 한다!)

 

 load average 가 비정상적으로 올라간다고 접속자가 많은 것으로 판단하고 무작정 서버를 늘릴려고 하는경우도 있다. 이에 대해선 추구 설명하겠지만. disk io 도 저 수치에 포함된다(알다시피 디스크 io 는 순수 cpu 연산에 비해 상당히 느려터졌다.)

일례로 8 코어 시스템에서 load average 가 40~50 까지 올라간 적이 있었다. 그러나 서비스에는 전혀 지장이 없었고 여느때와 다름 없었다. 원인을 찾아본결과 disk io 로 인해 비정상적으로 수치가 높아진것이 었다.(이럴 경우 memcached 나 저장 장치의 업그레이드를 고려 해봐야 할것이다.)

 

 

 여튼 만약 16코어 서버에 load average 가 15 정도까지 올라간다면 원인을 파악하고 대처 해야한다.