I/O 대기 병목 문제를 해결하려고 합니다

요약 버전:

  • 중간 수준의 부하 상태에서 iowait로 인해 시스템이 몇 분간 거의 마비됨
  • 해당 시점에 의미 있는 디스크 I/O가 발생하지 않음
  • DO(디지털오션)는 하이퍼바이저에 비정상적인 활동이 없다고 주장함

상세 버전:
현재 DigitalOcean의 8코어/16GB 드롭렛에서 실행 중이며, 단기적인 트래픽 증가에 대비하여 4/8에서 최근 업그레이드했습니다.

해당 시점 시스템의 db_shared_buffers는 2GB, 유니콘(unicorn) 워커는 8개로 설정되어 있었습니다. 이후 두 값을 모두 증가시켰습니다.

약 2시간 동안의 라이브 이벤트 동안 단일 토픽에 대한 집중적인 게시가 이루어졌으며, 해당 시간대 총 사용자 수는 약 200명, 분석 도구(Analytics) 기준으로 순간 평균 사용자 수는 약 70명이었습니다.

시스템은 1시간 이상 안정적으로 유지되었습니다. 로드 평균은 4 근처, CPU 사용률은 약 30%, 메모리 사용률은 약 35%였습니다. 의미 있는 디스크 활동은 없었고 포럼에도 문제가 없었습니다.

그때 갑자기 분석 도구상 사용자 수가 두 배로 늘었습니다. 이것이 실제 사용자였는지 다른 문제의 산물인지는 알 수 없습니다. 우리는 크거나 유명한 커뮤니티가 아니므로, 누군가 우리에게 링크를 걸거나 갑자기 대량의 신규 사용자가 유입되는 것은 매우 이례적인 일입니다.

동시에 iowait가 50% 이상으로 지속되는 경고와 함께 매우 높아졌습니다. 1분 로드 평균은 12까지 급등했고, 5분 로드 평균은 8을 초과했습니다. 전체 시스템이 매우 반응이 느려졌고, 포럼은 거의 멈추다시피 했으며, 높은 부하로 인한 임시 로그아웃이 많이 발생했습니다. CPU 사용률은 40%를 넘지 않았습니다.

이 상태는 3~4분간 지속된 후, 이후 10분 동안 서서히 정상으로 돌아왔습니다. DO 그래프에 따르면 디스크 I/O는 전체 기간 동안 1MB/s 미만으로 유지되었으며, 대부분 쓰기 작업이었습니다.

이것이 포럼/설정 문제일 가능성이 있나요? DigitalOcean이 거짓말을 하고 실제로 하드웨어 문제인 것일까요? 전자인 경우, 재발을 방지하기 위한 제안 사항이 있을까요? (이것은 처음 있는 일이 아니었습니다)

곧 커뮤니티에 매우 중요한 대규모 일회성 트래픽 이벤트가 예정되어 있습니다. 무엇이 효과가 있는지 실험해 볼 여유가 없습니다. 성공(또는 실패)할 기회는 단 한 번뿐입니다.

이것이 당신의 문제와 관련이 있는지 확실하지는 않지만, 최근 라이브 이벤트와 이로 인해 발생하는 활동 급증에 대한 논의가 많이 이루어지고 있습니다.