Tag Archives: 리눅스

killall로 죽지 않는 프로세스 개별로 죽이기

가끔 프로세스가 꼬이면서 killall로 죽지 않는 사태가 발생하곤 한다. 특히나 Tomcat님이 그럴때가 많은데 이상한점은 killall로는 안죽지만 kill로는 죽는다는 것이다.

하지만 수많은 프로세스들을 kill로 일일이 죽이다 보면 무언가 귀차니즘이 발동하곤 한다.

서버 관리자도 무작정 노가다를 해야 하는건 아니다. 그렇다면 어떤 방법이 있을고 하니 xargs라는 멋진 녀석이 있다.

xargs는 여러 인자를 옵션으로 받아 원하는 명령어를 일일이 수행해 주는 커맨드이다.

[code]# ps -C httpd –no-heading | awk ‘{ print $1 }’ | xargs -t -i kill -9 {}[/code]

이런식으로 죽이기 원하는 프로세스 명만 고쳐서 넣어주면 된다. (httpd 값 변경)

이렇게 한줄의 명령으로 손쉽게 잘 죽지 않는 녀석들을 맨투맨으로 죽일수 있다.

서버의 Load Average는 몇까지가 정상인가?

유닉스 기반의 서버에는 서버자체의 부하는 load average로 표현한다.

나의 경우에는 리눅스 서버만을 운영하고 있으므로 철저히 리눅스 베이스의 이야기를 하겠다.

top명령어를 통해 load average를 확인할수 있다.

사용자 삽입 이미지


위와 같은 형식으로 결과가 출력되는데 오른쪽 위에 load average가 표현됨을 알수 있다.

3개가 나오는데 각 1분, 5분, 15분 평균의 로드를 표시해 준다.

고로 가장 왼쪽이 가장 현재를 표시하고 있다라고 생각하면 되겠다. 그런데 운영을 하다보면 궁금한점이 있다.

“과연 몇까지 올라가도 정상으로 봐야 하는가?”

이부분은 어디 리눅스 관련 커뮤니티에 질문해 봐도 매우 추상적인 답변을 받게 되는 영역의 질문이다.

나역시도 저런 값이 존재하긴 하지만 서버상태는 으로 파악하는 수준의 기지를 발휘할수밖에 없었다.

하지만 얼마전에 SK커뮤니케이션즈의 모 대형 서비스 시스템을 담당하고 계신분을 만난 자리에서 대기업은 어떻게 이해하고 있는지 들어볼수 있었다.

결론은 이거였다.

CPU 1개당 2까지의 로드까진 정상으로 본다.

이게 무슨말인가? 현재의 대부분에 쓰이고 있는 요즘의 평균적인 제온 시스템이라면 CPU당 2까지의 로드까진 문제없는것으로 본다는것이다.

그렇다면 듀얼코어같이 HT(Hyper Threading)을 지원하는 CPU는 어떻게 계산하는지 물어보았다.

HT의 경우 CPU 2개로 친다는것이다. 쿼드코어의 경우에는 CPU4개로 친다는것이다.

고로 듀얼코어 CPU를 2개 꼽은 서버라고 하면 4 CPU x 2 = 8 의 로드까진 괜찮다는것으로 친다는것이 결론이었다.

내 개인 서버의 경우에는 CPU가 1개이지만 HT를 지원하므로 로드는 4까지 괜찮다는 결론이 나오게 되었다.

이러한 결과는 아마도 서버관리자들 사이에서도 의견이 분분한 부분이라 생각하는 부분이다. 하지만 대기업에서 사용하고 있는 방식이니 저렇게 생각을 하여도 괜찮을꺼라 생각해 본다.