3.0.6에서 3.1.2로 업데이트한 직후, 주로 다음 세 가지 지점에서 503 에러가 많이 발생하고 있습니다:
많은 아바타가 로드되지 않음
이미지 업로드가 간헐적으로만 작동함
topics/timings 관련 에러도 많이 발생함
서버 로그를 확인해 보니, 대부분의 503 에러는 production.log에 기록되지조차 않고 nginx 로그에만 가득 차 있었습니다. nginx의 레이트 리미팅(rate limiting) 때문일 수 있다고 생각해 templates/web.ratelimited.template.yml을 사용하지 않도록 변경해 봤지만, 별다른 도움이 되지 않았습니다. 여전히 503으로 응답되는 요청이 많으며, 대부분 user_avatars/show 관련 요청인 것으로 보입니다. 또한 production.log에는 이러한 요청이 전혀 기록되지 않는 것으로 보입니다.
Sidekiq에서는 이상한 점을 발견하지 못했습니다. 다만 /logs에는 다음과 같은 에러가 있었지만,
'hijack user_avatars show ' is still running after 90 seconds on db default, this process may need to be restarted!
이것은 몇 시간 전의 기록이며, 이후 인스턴스를 여러 번 재빌드했는데 다시는 나타나지 않았습니다.
이 인스턴스는 SSO를 사용하고 있으며, 아바타(URL)는 SSO에서 제공됩니다. 이미지는 S3를 사용하고 있습니다.
업데이트는 21일 아침에 수행되었습니다. 수신 네트워크 트래픽은 이제 정상으로 돌아오는 것으로 보입니다. 송신 트래픽은 여전히 평소보다 높지만, 아바타가 캐시되는 과정이라 가정하고 있습니다. user_avatars/show에 대한 503 에러 발생량은 훨씬 줄었습니다. 더 많은 아바타가 처리됨에 따라 시간이 지남에 따라 서서히 해결될 것으로 예상합니다.
그러나 여전히 두 개의 다른 엔드포인트에서 많은 503 에러가 로그에 나타나고 있습니다:
POST /topics/timings
이 엔드포인트에 여전히 많은 503 에러가 발생하고 있으며, 일부 사용자는 방문한 토픽이 읽음 처리되지 않는다고 보고하고 있습니다. 요청이 production.log에 전혀 기록되지 않는 것으로 보아 이에 대한 정보를 찾지 못했습니다. /logs에도 관련 내용이 표시되지 않습니다.
이러한 503 에러를 디버깅하려면 어디에서부터 시작해야 할까요? 제가 모르는 다른 로그가 있거나, (프로덕션 시스템에서) 로그를 더 상세하게 만들 수 있는 방법이 있을까요?
POST /uploads.json?client_id=....
이 503 에러에 대해 production.log에서 찾은 것은 다음과 같은 내용뿐입니다:
production.log 발췌
Started POST “/uploads.json?client_id=X” for x.x.x.x at 2023-10-24 10:24:55 +0000
Processing by UploadsController#create as JSON
Parameters: {“upload_type”=>“composer”, “relativePath”=>“null”, “name”=>“Screenshot 2023-10-24 at 11.22.32.png”, “type”=>“image/png”, “sha1_checksum”=>“d1f11731320437724003c3840c5dcc5f934ba25a”, “file”=>#<ActionDispatch::Http::UploadedFile:0x00007f3c5e3c9898 @tempfile=#Tempfile:/tmp/RackMultipart20231024-1991-b30vit.png, @content_type=“image/png”, @original_filename=“Screenshot 2023-10-24 at 11.22.32.png”, @headers=“Content-Disposition: form-data; name="file"; filename="Screenshot 2023-10-24 at 11.22.32.png"\r\nContent-Type: image/png\r\n”>, “client_id”=>“X”}
Rendered text template (Duration: 0.0ms | Allocations: 1) Completed 503 Service Unavailable in 10ms (Views: 0.4ms | ActiveRecord: 0.0ms | Allocations: 5007)
사용자들은 몇 번 다시 시도하면 성공한다고 보고합니다… 저는 이미 업로드 중인 파일이 있을 때 (다른) 파일을 업로드하려고 하면 에러를 비교적 일관되게 재현할 수 있습니다. 어떤 이유에서인지 하나씩 업로드할 때는 이런 현상이 덜 발생하는 것 같습니다.
# free -h
total used free shared buff/cache available
Mem: 15Gi 3.8Gi 621Mi 1.1Gi 10Gi 10Gi
# lscpu --parse=core | egrep -v ^# | sort -u | wc -l
2