이번 아침까지 꽤 빨랐던 사이트가 느려진 문제 해결

오늘 갑자기(분명한 이유 없이) 느려진 사이트를 어떻게 트러블슈팅해야 할까요?

리소스 사용량이 매우 낮습니다:


이것은 디스크 사용률 30%인 16GB 메모리 / 4 AMD vCPU / 200GB 디스크 / SFO3 - Ubuntu 24.04 (LTS) x64 드롭렛입니다.

DigitalOcean 서비스 상태는 오늘 하루 내내 정상이었습니다.

사용자들이 여러 지역에서 사이트가 느리다고 보고했습니다.

yaml:
UNICORN_WORKERS: 8
db_shared_buffers: "1024MB"
db_work_mem: "40MB"

최신 버전으로 재빌드하고 Sidekiq에 메모리를 좀 더 할당했습니다 UNICORN_SIDEKIQ_MAX_RSS: 1000

콘솔에 429 에러가 몇 개 나옵니다:


최근 3일간의 에러 로그:

안전 모드에서는 어떤 일이 일어나나요?

안전 모드에서는 콘솔에 오류가 표시되지 않지만, 속도가 훨씬 느립니다. 아무것도 로드에 10~15초 정도 걸리며, 이미지는 14.4 Kbps 모뎀으로 오는 것처럼 느릿느릿하게 로드됩니다.

/logs 로드에 약 20초가 걸렸고, /admin으로 돌아가는 데는 약 1분이 걸렸습니다.

“poll” 작업이 오래 걸리는 것 같습니다:

참고로, 현재 실행 중인 플러그인은 다음과 같습니다:

      - git clone https://github.com/discourse/docker_manager.git
      - git clone https://github.com/discourse/discourse-data-explorer.git
      - git clone https://github.com/paviliondev/discourse-locations.git
      - git clone https://github.com/discourse/discourse-affiliate.git
      - git clone https://github.com/discourse/discourse-yearly-review.git
      - git clone https://github.com/discourse/discourse-docs
      - git clone https://github.com/discourse/discourse-subscriptions
      - git clone https://github.com/paviliondev/discourse-category-lockdown
      - git clone https://github.com/discourse/discourse-reactions.git

오늘 아침에 수집한 데이터 포인트를 몇 가지 더 공유합니다. Sidekiq는 여유로운 모습입니다:

흥미로운 메모리 그래프입니다 - 앱 재구축 후 20~30% 수준에서 시작하다가 백업 실행 시 46%로 급등한 후 그 수준을 유지합니다:

게시물 테마 컴포넌트에 악명 높은 배지가 설치되어 있나요?

이거?

와! Post Badges 구성 요소를 제거한 뒤로 완전히 달라졌어요. 비활성화했을 때는 차이가 없었는데, 삭제하니 효과가 있었어요. 콘솔 오류도 더 이상 안 나와요.

@Falco 님, 감사합니다!

음, 그게 아니었거나, 적어도 전체적인 문제는 아닌 것 같습니다.

이제 깨진 이미지와 콘솔에 이런 것이 보입니다:

여전히 로딩이 느리거나, 로딩이 전혀 되지 않으면서 스피너가 계속 도는 상태입니다…

이 문제가 이 것과 관련이 있을까요?

약 4주 전에 Ubuntu 16.4 LTS droplet에서 Ubuntu 24.04를 실행하는 새로운 droplet으로 Discourse를 이동할 때 백업에서 복원했습니다. 수동으로 rebake를 수행하지 않았습니다.

더 이상해지고 있습니다. “사이트로 돌아가기” 링크를 클릭하여 /logs에서 /admin으로 이동할 때 발생하는 문제입니다.

최근 “no route named admin” 오류에 대한 다른 주제도 있었습니다.
Site Glitch Content Not Showing Up - #18 by Suresh_Suthar

이것도 Cloudflare와 관련이 있을 수 있습니다.
Resolving "SyntaxError: Unexpected identifier #..." caused by Cloudflare Auto Minify

음. 제 사이트는 Cloudflare을 사용하지 않지만, Chrome에서 헤더가 중복되어 보이는 것을 확인했습니다. 첫 번째 게시물처럼요.

docker_manager를 제외한 모든 플러그인을 제거하고 재구축했으니, 어떻게 동작하는지 다시 보고하겠습니다.

또 하나 참고할 점은, Chrome에서 사이트가 멈출 때 해당 탭을 닫고 새 탭에서 다시 열어야 했습니다. 강제 새로고침은 아무런 효과가 없었습니다.

현재 S3로의 야간 백업이 설정 변경 없이 실패하고 있습니다:

[2024-10-10 15:03:04] 아카이브 업로드 중...
[2024-10-10 15:14:33] 예외: 멀티파트 업로드 실패: Net::WriteTimeout with #<TCPSocket:(closed)>

수정: 수동으로 트리거된 두 번의 백업이 위와 동일한 오류로 실패했지만, 그 후 두 번의 수동 백업은 성공했습니다. 모두 설정 변경 없이 발생했습니다. :person_shrugging:

콘솔에서 에러는 보이지 않는데, 간헐적으로 로딩 시간이 매우 느립니다:

Discourse Doctor는 첫 번째 실행에서는 문제가 없는 것으로 보이지만, 두 번째 실행에서는 포트 587이 차단되었을 가능성이 높다고 보고합니다. 이는 다소 이상한데, 첫 번째 실행에서 테스트 메일을 성공적으로 전달했고, 세 번째 실행에서도 다시 성공적으로 전달했기 때문입니다:

Connection to port 587 failed.
====================================== SOLUTION =======================================
The most likely problem is that your server has outgoing SMTP traffic blocked.
If you are using a service like Mailgun or Sendgrid, try using port 2525.

이 DigitalOcean 드롭렛에 뭔가 문제가 있는 것 같다는 제 추측이 맞나요?

이 드롭렛에는 네트워크 문제가 있는 것 같습니다. 다운로드 속도가 꽤 느리지만, 업로드 속도를 확인해 보세요 :scream::

speedtest-cli
Retrieving speedtest.net configuration...
Testing from Digital Ocean (24.199.xxx.xxx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Next Level Infrastructure (Santa Clara, CA) [4.38 km]: 2.242 ms
Testing download speed................................................................................
Download: 839.25 Mbit/s
Testing upload speed......................................................................................................
Upload: 1.27 Mbit/s

드디어 이 사건의 행복한 결말입니다…

speedtest-cliiperf3 네트워크 처리량 테스트를 수행해 보니 드롭렛과 외부 네트워크 간의 속도가 극도로 느린 것으로 나타났습니다. DigitalOcean에 조사를 요청했고, 자체 테스트를 거친 후 다음과 같은 결론을 내렸습니다:

드롭렛이 위치한 하이퍼바이저에서 일부 문제를 발견했습니다. 백엔드 팀과 협력하여 드롭렛을 다른 하이퍼바이저로 마이그레이션하는 작업을 진행 중입니다.

모든 것이 다시 정상으로 돌아왔습니다.