나스 한 대로 블로그 두 개, 병목은 CPU가 아니었습니다

NAS를 제자리에 놓고 나니 다른 생각이 들었습니다. 이 기계, 파일만 담아두기엔 아깝다는 생각이요.

이미 블로그를 하나 돌리고 있었습니다. 워드프레스를 도커로 올려서 쓰고 있었는데, 하나를 더 만들고 싶어졌습니다. 주제가 다른 블로그를 따로 굴리고 싶었거든요.

그래서 먼저 물어봤습니다. 이 NAS가 블로그를 두 개 감당할 수 있나?

결론부터 말씀드리면 가능했습니다. 다만 병목은 제가 예상한 곳이 아니었고, 범인도 엉뚱한 데 있었습니다.

CPU를 걱정했는데 문제가 아니었습니다

처음엔 CPU를 걱정했습니다. 제 NAS는 저전력 셀러론을 쓰는 보급형이라 웹서버 두 개를 돌리면 버거울 것 같았습니다.

재보니 아니었습니다. 4코어 중 실제 CPU 사용은 한참 여유가 있었습니다. 부하가 걸린 항목은 CPU가 아니라 디스크 입출력 대기였고, 그마저도 심각한 수준은 아니었습니다.

진짜 문제는 메모리였습니다.

여유 메모리보다 스왑을 봐야 합니다

메모리를 확인했을 때 여유가 약 410MB였습니다. 전체가 1.7GB 남짓이니 넉넉하진 않아도 못 쓸 정도는 아니라고 생각했습니다.

그런데 같은 화면에서 스왑 사용량이 눈에 들어왔습니다. 2GB 중 1.6GB를 이미 쓰고 있었습니다.

스왑은 메모리가 부족할 때 디스크를 메모리처럼 빌려 쓰는 공간입니다. 디스크는 메모리보다 훨씬 느리기 때문에, 스왑을 많이 쓰고 있다는 건 이미 메모리가 모자란 상태를 느린 방식으로 버티고 있다는 뜻입니다.

여기서 판단이 뒤집혔습니다. “지금 트래픽이 적으니 하나 더 올려도 되겠지”가 아니라, “지금도 이미 빠듯한 상태”였던 겁니다.

범인은 워드프레스가 아니었습니다

그다음은 누가 메모리를 쓰고 있는지 확인할 차례였습니다. SSH로 접속해 메모리를 많이 쓰는 순서대로 프로세스를 나열했습니다.

ps aux --sort=-%mem | head -20

1등이 워드프레스일 거라 생각했습니다. 아니었습니다.

가장 많이 쓰고 있던 건 파일 동기화 앱 하나였습니다. 혼자서 약 390MB, 전체 메모리의 22%를 쓰고 있었습니다. 예전에 설치해두고 거의 쓰지 않던 앱이었습니다.

워드프레스 쪽은 아파치 워커들이 합쳐서 400~500MB 정도였고, 데이터베이스는 30MB 남짓으로 오히려 가벼웠습니다.

안 쓰는 앱 하나가 블로그 전체보다 비슷하게 먹고 있었던 셈입니다.

끄고 나니 두 배가 됐습니다

패키지 센터에서 그 앱을 정지했습니다. 결과가 이랬습니다.

항목 정지 전 정지 후
여유 메모리 약 410MB 약 746MB
스왑 여유 약 484MB 약 765MB
해당 앱 프로세스 약 390MB 사용 사라짐

여유 메모리가 거의 두 배가 됐습니다. 새 워드프레스 스택 하나를 올리는 데 드는 메모리가 대략 250~450MB이니, 이제 올려도 되는 상태가 됐습니다.

한 가지 주의할 게 있습니다. 앱 안에서 동기화를 멈추는 것과 패키지 자체를 정지하는 것은 다릅니다. 저도 처음엔 앱 설정에서 껐는데, 프로세스는 그대로 살아서 200MB를 계속 쓰고 있었습니다. 패키지 센터에서 정지해야 완전히 내려갑니다.

블로그를 올리기 전에 재보는 순서

같은 고민을 하고 계시다면 이 순서로 확인해 보시기 바랍니다. SSH가 익숙하지 않으시면 DSM의 리소스 모니터에서도 대부분 볼 수 있습니다.

  1. 여유 메모리와 스왑을 같이 봅니다. 여유만 보면 착각합니다. 스왑을 많이 쓰고 있으면 이미 부족한 상태입니다.
  2. 메모리를 많이 쓰는 프로세스를 나열합니다. 안 쓰는 앱이 상위에 있는 경우가 흔합니다.
  3. 안 쓰는 패키지를 정지합니다. 앱 설정이 아니라 패키지 센터에서 정지해야 합니다.
  4. 다시 재봅니다. 프로세스가 실제로 사라졌는지 확인합니다.

CPU는 생각보다 여유가 있는 경우가 많습니다. 보급형 NAS에서 먼저 막히는 건 대체로 메모리입니다.

정리

  • 블로그를 하나 더 올리기 전에 리소스부터 재보시기 바랍니다.
  • 여유 메모리만 보지 말고 스왑 사용량을 같이 보십시오. 스왑을 많이 쓰면 이미 모자란 겁니다.
  • 메모리를 가장 많이 쓰는 게 정작 안 쓰는 앱인 경우가 흔합니다.
  • 앱 안에서 끄는 것과 패키지를 정지하는 것은 다릅니다. 정지 후 프로세스가 실제로 사라졌는지 확인하십시오.
  • 워드프레스 스택 하나를 올리는 데 드는 메모리는 대략 250~450MB로 보시면 됩니다.

다음 편에서는 실제로 두 번째 워드프레스를 어떻게 분리해 올렸는지 적겠습니다.

댓글 남기기