Jobs::PeriodicalUpdates가 CPU 사용량(100% 초과)이 높은 원인입니다

Jobs::PeriodicalUpdates가 CPU 사용률이 100%를 초과하는 원인이 되고 있습니다.

sidekiq/scheduler/history를 확인해 보면 다음과 같은 상황이 보입니다.

Jobs::PeriodicalUpdates가 79초까지 증가한 것을 확인했습니다. 이로 인해 CPU 사용률이 상승하고, 웹사이트에 접속한 사용자들이 접속이 끊기는 문제가 발생하고 있습니다.

Jobs::PeriodicalUpdates를 끄는 것이 효과가 있을까요? 어떻게 끌 수 있나요?
또한, Jobs::AboutStats ; Jobs::DestroyOldDeletionStubs ; Jobs::DirectoryRefreshDaily ; Jobs::EnsureDbConsistency 역시 CPU 사용률이 100%를 초과하게 만드는 원인이 되고 있습니다.

이러한 오류를 어떻게 해결할 수 있을까요?

하드웨어, RAM, SSD는 어떤가요? 데이터베이스 크기는 얼마나 되나요? 게시글은 몇 개나 있나요?

약 60만 개의 주제가 있습니다.
400GB SSD, 16코어 CPU. RAM의 경우 전체 용량을 확인할 수 없습니다.

Discourse를 다시 구축할 때 다음 오류가 발생합니다(재구축 전에는 문제가 없었습니다).

음. 이상하네. 아마 버그인 것 같아.

모두가 도와주셨으면 좋겠습니다.
누군가 알려줄 수 있을까요?

Jobs::PeriodicalUpdates . task에서
Jobs::PeriodicalUpdates가 무엇을 의미한다고 생각하시나요?
Jobs::PeriodicalUpdates를 비활성화할 수 있을까요?

이 작업(job)에서 사용되는 작업 목록이 이거라고 생각합니다: discourse/app/jobs/scheduled/periodical_updates.rb at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

저는 이걸 분석하는 전문가가 아니지만, 두 가지 설정이 언급되어 있는 것을 볼 수 있습니다.

  • automatically download gravatars(그라바타 자동 다운로드): 이게 높은 CPU 사용량을 설명하기는 어렵다고 생각합니다.
  • rebake_old_posts_count: 이 설정은 이제 숨겨져 있지만, 몇 달 전에 오래된 게시물을 매 15분마다 다시 생성하도록 많이 설정해 두셨다면, 이 CPU 사용량을 좀 더 설명할 수 있을 것입니다.

알겠습니다. 15분 후에 periodicupdates가 실행되고 있군요.

이것이 원인이라면 rebake_old_posts_count를 어떻게 끄나요?

오랜만에 처음 하는 업그레이드인가요? 얼마 전에 변경된 부분 때문에 이미지를 리사이즈하고 있는 것 같습니다. 곧 해결될 겁니다.

마지막으로 업그레이드한 버전은 2.7.x였습니다 (x의 정확한 숫자는 기억이 나지 않아요).

누군가 도와줄 수 있으면 좋겠습니다.

그것을 끌 수 없습니다. 재베이킹(rebake)이 필요한 변경 사항이 있습니다. 자원이 충분하다면 성능을 개선하기 위해 설정을 조정할 수 있습니다.

:slight_smile: 에러를 처리하는 방법이 있을 것 같은데,
제 기술 수준이 좀 제한적이어서요.

이 서버에 해당 리소스가 있는 상태에서 discourse-setup을 실행하셨나요? 리소스를 최대한 활용하지 못하고 있을 수 있습니다.

하지만 현재 수행 중인 작업들은 반드시 필요하므로, 끄시는 것을 권장하지 않습니다.

이제 rebake_old_posts_count가 숨겨져 있습니다. 이 값을 보이게 하려면 어떻게 해야 하나요? 값을 줄이고 싶습니다.