반응형

[성능 개선 이야기] 업무가 끝난 시간이 한가한 시간은 아니었습니다 — nmon 사용기

안녕하세요, 가야태자 @talkit 입니다.

관측성 이야기를 이어가고 있는데요. 오늘은 nmon입니다.

가벼운 도구라 이야기할 게 별로 없을 것 같았는데, 정리하다 보니 두 번의 경험이 서로 정반대여서 오히려 쓸 이야기가 생겼습니다.


첫 번째 — 목표 40 TPS, 그리고 AIX

공공기관 업무 시스템의 성능 테스트를 맡았을 때입니다.

JMeter로 부하는 걸 수 있는데, 서버 쪽 지표를 같이 봐야 했습니다. 응답이 느릴 때 그게 애플리케이션 문제인지 장비가 이미 한계인지 구분하려면요.

그래서 Zabbix를 설치해야 하나 고민했습니다. 그런데 1회성 성능 테스트가 끝나면 걷어낼 건데, 운영 중인 시스템에 모니터링 서버를 새로 세우는 건 부담이 컸습니다. 방화벽도 열어야 하고, 에이전트도 깔아야 하고, 승인도 받아야 하니까요.

그래서 일단 여쭤봤습니다.

"서버 모니터링할 소프트웨어가 설치되어 있습니까?"

상주 TA 분이 답을 주셨습니다.

"nmon이 있으니 그거 쓰시면 됩니다."

이미 다 깔려 있었습니다 ^^;;

AIX였거든요

나중에 알고 보니 당연한 일이었습니다. 피검증 장비가 AIX였는데, nmon은 AIX에 기본으로 들어 있습니다. AIX 5.3 TL09부터 포함되어 있고, topas_nmon으로도 쓸 수 있습니다.

AIX 환경에서 성능 테스트를 하실 일이 있다면, 뭘 설치할지 고민하기 전에 nmon부터 찾아보시면 됩니다.

수집은 이렇게 했습니다

nmon -i 1 -c 3600

-i 1은 1초 간격, -c 3600은 3600회 수집입니다. 즉 1초마다 1시간 동안 기록합니다.

성능 테스트는 보통 30분에서 한 시간 정도 돌리니까 이 정도면 딱 맞습니다. 그리고 nmon 자체가 워낙 가벼워서 측정하는 도구가 측정 대상에 영향을 주는 걱정을 하지 않아도 됩니다.

수집된 파일을 내려받아 프로젝트 룸으로 옮긴 다음, nmon analyser를 돌려서 그래프를 만들었습니다. nmon 원시 파일을 엑셀 기반으로 변환해서 CPU, 메모리, 디스크, 네트워크 그래프를 자동으로 그려주는 도구입니다.

그 그래프를 JMeter가 만들어준 리포트와 함께 첨부해서 성능 테스트 보고서를 냈습니다.


그런데 첫날 데이터가 이상했습니다

DB 서버가 두 대였는데, 지표가 이상하게 나왔습니다.

  • 배치 서버와 물려 있는 장비 → CPU가 높음
  • WEB / WAS와 물려 있는 장비 → 평이함

제가 부하를 걸고 있는 건 WEB/WAS 쪽인데, 정작 CPU가 높은 건 엉뚱한 쪽이었습니다. 이러면 측정값을 믿을 수가 없습니다. 응답이 느려도 내 부하 때문인지 다른 것 때문인지 구분이 안 되니까요.

원인은 테스트 시간이었습니다.

업무 시스템이라 사용자에게 영향을 주면 안 됐습니다. 그래서 업무시간이 끝난 저녁 8시쯤을 골랐는데요.

그 시간이 배치가 도는 시간이었습니다 T.T

"사용자가 없는 시간"과 "서버가 한가한 시간"은 다릅니다

지금 생각하면 당연한 일입니다. 배치는 원래 사용자가 없는 시간에 돌리도록 짜여 있으니까요. 제가 피하려던 그 시간이, 배치가 노리던 바로 그 시간이었습니다.

시간을 조정하고 다시 측정하니 nmon이 정상적인 신호를 주기 시작했습니다.

성능 테스트 일정을 잡으실 때는 업무 일정만 보지 마시고 배치 일정도 같이 확인하시길 권합니다. 운영 담당자분께 "이 시간에 도는 배치가 있습니까"만 여쭤보면 됩니다.

JMeter만 봤다면 몰랐을 겁니다

이 부분이 중요합니다.

만약 JMeter 결과만 보고 있었다면, 응답 시간이 나쁘게 나온 걸 확인하고 "시스템이 느리네"라고 결론 냈을 겁니다. 원인은 몰랐겠죠.

서버 지표를 같이 보고 있었기 때문에 "엉뚱한 장비가 바쁘다"를 발견할 수 있었습니다.

앞선 APM 글에서 "서버는 멀쩡한데 사용자는 느리다"는 이야기를 했는데, 이건 그 반대 방향입니다. 애플리케이션 지표만 봐도 안 되고, 서버 지표만 봐도 안 됩니다. 양쪽을 같이 놓고 봐야 원인이 보입니다.


두 번째 — 이번엔 제가 실수했습니다

두 번째는 유통 쪽 ERP 성능 컨설팅을 할 때였습니다. 이번엔 AWS 환경이었습니다.

문제는 제가 AWS 콘솔에 접속할 수 없었다는 겁니다. 권한이 없었으니까요.

그래서 nmon을 썼습니다. 기록 모드로 데이터를 남기면서, 동시에 실시간 CLI 모드로 화면을 띄워 놓고 지켜봤습니다. 부하를 거는 동안 CPU와 메모리가 어떻게 움직이는지 눈으로 보고 싶었거든요.

그런데 결말이 좀 우스웠습니다.

결국 고객사 인프라 담당자분께 AWS 모니터링 자료를 요청드렸고, 그 자료를 보고서에 넣었습니다. nmon으로 기록한 건 제출하지 않았습니다.

처음부터 자료를 요청드렸으면 될 일이었습니다. 접근 권한이 없다는 이유로 혼자 우회로를 찾느라 시간을 쓴 셈이죠 ^^;;


두 번을 나란히 놓고 보니

정리하면서 알게 됐는데, 두 경험이 정확히 대칭입니다.

첫 번째 — 뭘 설치해야 하나 고민하다가 여쭤봤더니 이미 있었습니다. Zabbix를 안 깔아도 됐습니다.

두 번째 — 접근이 안 되니 혼자 우회했는데, 결국 여쭤봐야 했습니다. 처음부터 여쭤봤으면 됐습니다.

같은 교훈의 성공 버전과 실패 버전인 셈입니다.

현장에 이미 있는 것을 먼저 물어보세요.

컨설팅으로 들어가면 뭔가 가져와서 세팅해야 할 것 같은 마음이 듭니다. 그런데 상주하는 분들이 이미 다 갖춰 두신 경우가 많습니다. 도구도, 데이터도요.

특히 1회성 작업이라면 더욱 그렇습니다. 며칠 쓰자고 뭘 설치하는 건 서로에게 부담입니다.


nmon의 자리

정리하자면 nmon은 이런 상황에 맞습니다.

  • 서버 몇 대를 짧은 기간 집중적으로 볼 때
  • 뭘 설치하기 부담스러운 환경일 때
  • AIX 환경 — 이미 들어 있습니다

반대로 여러 장비를 상시로 봐야 한다면 Zabbix 같은 중앙 집중형이 맞습니다. nmon은 한 대를 깊게, Zabbix는 여러 대를 넓게 보는 도구입니다.

그리고 무엇보다, 부하 발생기 리포트만으로는 성능 테스트 보고서가 완성되지 않습니다. JMeter 리포트 + 서버 지표가 함께 있어야 "왜 그랬는지"를 설명할 수 있습니다.

즐거운 하루 되십시오.

반응형

+ Recent posts