CPU, 메모리 및 스왑 사용률 100%

최근 내 Discourse 포럼에서 HTTP 500 오류가 발생하고 있습니다. Digital Ocean의 Droplet에 호스팅되어 있으며, CPU, 디스크, 메모리가 지속적으로 100%를 유지하고 있음을 확인했습니다.

Droplet을 재시작하면 문제가 일시적으로 해결되고 포럼에 접근할 수 있지만, 포럼의 트래픽이 많지 않은데도 시스템에 이렇게 큰 부하가 걸리는 원인이 무엇인지 파악이 되지 않습니다.

콘솔에 들어가 보니 메모리 스왑도 최대치까지 차 있는 상태이며, 문제의 원인을 특정할 수 없습니다. 어디서부터 확인해 볼지 조언을 주실 수 있을까요?

최근 포럼에서 사용자 활동이 크게 증가했나요? CPU가 지속적으로 100%로 과부하 상태라면, 백그라운드에서 여러 작업이 실행되고 있을 수 있습니다. 현재 드롭렛의 사양은 어떻게 되나요? 필요에 따라 드롭렛을 업그레이드해 보는 것을 고려해 보셨나요?

안녕하세요,

아니요, 사용자 수나 활동량이 갑자기 늘어난 적이 전혀 없습니다. 이미 상당한 기간 동안 활동이 거의 없었기 때문에, 현재 드롭렛이 이런 용량으로 운영되고 있다는 점이 의아합니다.

이 드롭렛은 1 vCPU, 2GB RAM, 50GB 디스크 구성으로, 초기 출시 당시에는 사용자 활동량이 훨씬 많았음에도 불구하고 충분한 성능을 발휘했습니다.

Discourse를 최신 버전으로 업그레이드해 보거나, 로그를 살펴보고 문제를 찾아보시는 것을 권해 드립니다.

먼저 Docker 관리자를 업그레이드하려고 했지만, 서버 문제로 인해 완료되지 않고 있습니다. (주말 내내 실행을 남겨두었지만 여전히 업그레이드가 되지 않았습니다.

수정: 로그를 확인해 보니 몇 가지 문제가 보입니다:

쉘에서 업그레이드를 시도해 보세요:

cd /var/discourse
./launcher rebuild app

셸을 업그레이드하고 Sidekiq에서 여러 재시도 작업을 삭제한 후(웹사이트와 일치하지 않는 SMTP SSL 오류) 오류 발생률이 급격히 감소했습니다.

이제 처리할 새로운 오류가 발생했습니다.

Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #TCPSocket:(closed)