3.4.0.beta4-dev(58f75ed205) 업그레이드 이후 CPU 사용량 증가

이번 주말 업그레이드 이후 CPU 사용량이 상당히 증가한 것을 확인했습니다. RUBY 프로세스가 주요 원인으로 보입니다. 이는 해당 토픽에서 다른 디스코스(Discourse) 사용자가 언급한 내용과 일치합니다.

아래 그래프에서 볼 수 있듯이, 업그레이드 이전의 CPU 사용량과 로드는 업그레이드 이후보다 훨씬 낮았습니다. 업그레이드는 1월 31일 저녁에 수행되었습니다.

33시간 간격으로 촬영한 TOP 명령어 실행 결과 두 장입니다:

33시간 동안 ruby 프로세스의 CPU 사용량이 현저히 증가했습니다. TOP 데이터에 따르면, 지난 22일 동안의 CPU 사용량 대비 최근 33시간 동안 CPU 사용량이 2배로 증가했습니다. 33시간 동안 총 11시간의 CPU 시간을 사용했습니다. (5개의 PID에 걸쳐 총 648분)

추가 데이터:

  • 지난 이틀간 트래픽은 약 10% 감소했습니다. (애널리틱스 및 대시보드 기준)
  • 표준 단일 컨테이너 Discourse 설치 (채팅 없음)
  • Sidekiq 큐는 최소 수준입니다. (하루 1,000~2,000건)
  • Discourse 로그에서 특이한 사항은 발견되지 않았습니다.
  • 8GB RAM과 2개 AMD vCPU를 갖춘 DO(DigitalOcean) 서버에서 실행 중입니다.

서버가 완전히 다운된 상황은 아니지만, 5%~7% 수준으로 돌아가는 서버가 25% 수준으로 돌아가는 서버보다 훨씬 안정적입니다.

이 문제를 해결하는 데 도움이 될 수 있는 어떤 정보를 제공해야 할까요?

감사합니다.

버그가 있는지 확인하기까지 잠시 지원 티켓으로 남겨두겠습니다.

컨테이너에 들어가서 htop을 실행해 볼 수 있을까요? (설치가 필요합니다) 이렇게 하면 CPU 사용량이 높은 특정 프로세스를 확인할 수 있습니다.

다음과 같은 기법을 사용하면 더 많은 정보를 얻을 수 있습니다: Debugging 100% CPU usage in production Ruby on Rails systems

그러나 가장 가능성이 높은 경우는 sidekiq /sidekiq가 인스턴스에서 과부하 상태인 것입니다. (특히 스케줄러를 살펴보는 것이 좋습니다)

htop 뷰.

30초짜리 영상입니다:

랜덤 스크린샷:

트리 뷰:

sidekiq:


구체적으로 보고 싶은 것이 있으면 알려주세요. I

음, 뭔가 이상해요:

top -H -p PID_OF_UNICORN

거기서 V8 DefaultWorker를 볼 수 있을 것 같아요. 이건 mini_racer의 회귀(regression) 문제인 것 같네요. 이 문제가 해결되는지 확인하기 위해 되돌려 볼게요.

네, 이제 되돌려 놓았습니다.

커밋으로 성능이 복원되었는지 알려주세요.

네, 높은 CPU 사용량 문제가 해결되었습니다. 1분 및 5분 평균 부하가 이전 값의 약 1/3 수준으로 낮아졌습니다. 이는 현재 시스템에서 htop과 netdata가 실행 중인 상태에서의 결과입니다.

HTOP 영상

Do 그래프

시스템에 더 많은 데이터베이스 쿼리가 캐시됨에 따라 CPU 사용량과 부하가 서서히 감소할 것으로 예상됩니다.

부하 테이블:

시간 수정 전 수정 후
1분 0.4 ~ 0.6 0.06 ~ 0.1
5분 0.39 ~ 0.5 0.15 ~ 0.18

15분 지표는 재빌드(rebuild)의 영향을 받습니다. 오늘 아침에 추가 통계를 공유하겠습니다.

늦은 밤까지 수정해 주셔서 감사합니다.

죄송합니다. mini_racer 업그레이드가 정말 큰 모험이었어요. 곧 해결될 수 있기를 바랍니다.

빠른 응답과 조사를 위해 감사합니다.

롤백보다는 그날 다른 계획이 있으셨을 텐데요.

이주 후 2주째인 신규 Discourse 사용자로서, 이 제품은 사용감이 매우 좋습니다.

여기서도 비슷한 상황입니다.

[수정: 최신 브랜치로 업데이트한 후 이제 해결된 것 같습니다]

재빌드 후 18시간이 지난 성능 검토 결과입니다. 부하 테이블이 모든 것을 말해 줍니다.

부하 테이블:

시간 수정 전 수정 후
1분 0.4 ~ 0.6 0.03 ~ 0.05
5분 0.39 ~ 0.5 0.09
15분 0.68 0.12

범례:

  • 빨간 화살표 - 앱 재빌드
  • 보라색 화살표 - netdata 종료

참고로, 루프를 닫으면서, 이 문제를 일으키던 버그는 다음과 같았습니다:

저는 해당 지엠(gem)을 업데이트했습니다. 즉각적인 이점 중 하나는 이 v8 버전이 약간 더 적은 메모리를 사용한다는 점으로, 이는 좋은 소식입니다.

어젯밤 수정이 포함된 최신 릴리스를 설치했습니다. CPU 사용량이 과거 수준으로 돌아왔습니다.

훌륭한 작업에 감사드립니다.