속도 저하를 어떻게 진단하나요?

최근 사이트에서 페이지 로딩 시 약간 갑작스러운 지연이 발생하고 있습니다. 이전에 백업이 생성되면서 DigitalOcean 볼륨의 용량을 초과하여 사이트가 다운된 문제가 있었습니다. 그 이후로 사이트를 다시 구축하는 데 어려움을 겪고 있습니다. 시점상 이 두 사건이 관련이 있을 수 있습니다. 현재 사이트는 안정된 상태이지만, 평소보다 느린 상태입니다.

발생한 세부 사항을 더 자세히 설명할 수도 있지만, 보다 일반적인 질문을 드리고 싶습니다. 지연의 원인을 진단하는 데 사용할 수 있는 기법에는 어떤 것들이 있을까요? 제 드롭릿은 CPU 사용률이 평균 20%로, 자원이 충분해 보입니다 (메모리 4GB / AMD vCPU 2개 / 디스크 80GB, 일일 페이지뷰 약 15,000회).

어떤 팁이든 환영합니다.

가장 먼저 시도할 방법은
vmstat 5 5
명령어를 터미널에서 실행하는 것입니다.

제안해 주셔서 감사합니다. 해당 명령어에 익숙하지 않은데, 특별히 확인해야 할 부분이 있을까요?

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 475136 144304  20296 1786100    2    3  2622   447   44   50 19  3 72  1  4
 0  0 475136 143076  20304 1785312    0    0    65    25  622  584  2  1 95  0  1
 0  0 475136 141080  20456 1789144    0    0   800     3  459  473  2  1 96  0  1
 3  0 475136 143092  20572 1783408    0   17 11598    51  733  966 14  6 67  2 12
 0  0 475648 134688  20376 1791036    0   81 38915   394 1323 1784 10  8 61  8 13

감사합니다! 메모리가 부족하다면 캐시 수치가 작을 것이고, 페이지_fault가 많다면 si와 so 열의 값이 클 것입니다. 하지만 현재는 그렇지 않습니다.

bi와 bo에서 큰 피크가 관찰되는데, 이는 일반적으로 디스크 활동입니다. 어딘가에서 무언가를 빌드하거나 복구하거나 스캔하고 있는 것은 아닌지 궁금합니다.

ps auxrc를 5초 간격으로 1분 정도 실행해 보시고, 바쁜 프로세스를 현장에서 잡아볼 수 있는지 확인해 보세요.

이미 설치되어 있지 않을 수도 있는 다른 유틸리티들도 있습니다. “How to Monitor Disk IO in a Linux System” 또는 유사한 검색어를 찾아보세요.

시스템의 무결성에 대해 의심이 든다면, 백업에서 재구축하는 것이 가장 빠른 해결책일 수 있습니다. 하지만 사고에 대비하여 백업의 오프사이트 사본을 하나, 아니면 두 개 정도 확보해 두시기 바랍니다. 그리고 가능하면 새 인스턴스에 설치하고, 새 인스턴스가 정상적으로 작동하는 것을 확인하기 전까지는 기존 인스턴스를 유지해 두는 것이 좋습니다.

정말 좋은 조언이네요, 감사합니다!

현재 메모리 사용량이 80%입니다. 이것이 일반적인가요? 사용량이 일시적으로 줄어든 이유는 런처를 사용하여 앱을 중지하고 다시 시작했기 때문입니다.

droplet: 4 GB Memory / 2 AMD vCPUs / 80 GB Disk

새로운 droplet을 생성하고 포럼의 백업(이미지 제외)을 설치했는데, 비슷한 현상이 발생합니다.

메모리 기준으로 정렬된 htop 출력:

80%는 문제없어 보입니다.

더 흥미로운 점은, sidekiq 프로세스가 많은데도 주석에 "0 of 5 busy"라고 표시되어 있다는 것입니다. 실제로는 5개보다 많습니다. 또한 unicorn 스레드도 많이 있는 것으로 보입니다.

새로운 토픽을 여시고, htop 출력과 함께 unicorn 개수를 조정했는지 여부를 보여주는 yml 설정을 포함해 올려보십시오. 이 프로세스 구성이 합리적인지 여부에 대해 질문해 보시기 바랍니다.

저는 같은 VPS에서(프로세서만 다릅니다) 매우 유사한 htop를 사용하고 있으며, 기본 설정에서 아무것도 변경하지 않았습니다.

아무것도 모른다면, 그 시점에 트래픽이 거의 없거나 많지 않다는 한 가지 사실만 보여준다고 주장하겠습니다.

아 네, 제 htop을 직접 확인해 보았어야 했는데, 매우 비슷하네요.

'느려짐’이라는 원래 관찰 사항에 대해, 아주 다른 아이디어를 하나 제안합니다. Alt-P 키를 눌러 미니 프로파일러를 활성화한 후, 포럼에서 일반적인 대형 페이지에 접근하여, 오른쪽 상단에 표시되는 시간 수치를 클릭해서 어떤 쿼리가 실행되고 있는지, 그리고 각 쿼리에 얼마나 시간이 걸리는지 확인해 보세요.

apt upgrade와 재빌드(rebuild)를 수행할 수 있었습니다. 이 문제: Pups error on rebuild 🐕 가 잠시 동안 재빌드를 방해하고 있었습니다.

재빌드 이후로 느낌상 개선된 것 같습니다. 하지만 이런 경우 저는 느낌만으로 운영하기보다는 분석과 측정 가능한 데이터를 선호합니다. @Ed 님이 주신 팁에 감사드리며, 향후 모니터링에 유용할 것입니다.

이러한 프로파일링 데이터 중 일부를 캡처하여 관리자 페이지를 통해 인스턴스의 "건강 상태"를 표시할 수 있는지 궁금합니다. 잠재적인 플러그인 아이디어나 향후 핵심 기능으로 발전할 수 있지 않을까요?