0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

unicornのワーカーがすべて処理中になった時のnginx/Railsログ

Posted at

nginx -> unicorn の間で待ちが発生すると思うがログにはどうでるんだろう?と思って整理してみた。
考えてみるととても当たり前。でも、もう考えたくないのでまとめておく。

結論

  • nginxの $time_iso8601 はリクエストが完了した時刻
  • Railsのログに Started GET xxxx が記録されるのは unicorn のワーカにリクエストが到達して処理が開始されたタイミング
    • まぁ当たり前か
  • unicornが枯渇していてリクエストがワーカーに割り当てるまでの待ち時間は Railsの Completed のログに含まれない

状況

  • 2021-02-19 10:00:00 にリクエストが2つ同時にnginxに到達
  • Rails側で、1リクエストを処理するのに10秒かかる

どう記載されるか?

先に到達した方のリクエスト

  • nginx
    • $time_iso86012021-02-19 10:00:10
    • $request_time10
    • $upstream_response_time10
  • Rails
    • Started GET "/hoge" ... のログの時刻は 2021-02-19 10:00:00
    • Completed 200 OK in xxx ms ... のログの時刻は 2021-02-19 10:00:10ms の所はほぼ10秒」

後に到達した方のリクエスト

ワーカーがすべて処理中なので10秒間待たされる。

  • nginx
    • $time_iso86012021-02-19 10:00:20
    • $request_time10
    • $upstream_response_time10
  • Rails
    • Started GET "/hoge" ... のログの時刻は 2021-02-19 10:00:10
    • Completed 200 OK in xxx ms ... のログの時刻は 2021-02-19 10:00:20ms の所はほぼ10秒」

再現手順

  1. unicornのワーカー数を1にする
  2. 数秒sleepするエンドポイントに対してcurlを2つ同時に実行
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?