概要
- zabbixサーバのwebサーバ用として利用しているNginxでGrafanaへreverse proxyしている。
- client -> ALB -> Web server(zabbix用) -> (Nginxによるreverse proxy) -> grafana
- グラフ描画する際のクエリdurationが大きい場合、Nginx側で504 timeoutしてしまう事象が発生。
fastcgi
は利用していない。
Nginxのtimeout parameterについて
- timeout
- serverとの接続確立中、request送信中、response headerの読み取り中のtimeoutを定義する。
- 今回はNginx自体ではなく、reverse proxy経由でのtimeoutの為関係無いと思われる。
- proxy_connect_timeout
- proxy serverとの接続確率時のtimeoutを定義する。
- default 60sec
- このタイムアウトは75secを超えることは出来ない。
- 既にbackend serverと接続されている場合は、timeoutは発生しない。
- 公式サイトによると、
proxy_connect_timeout
値は75秒を超えないようにする必要がある。
- proxy_read_timeout
- default 60sec
- proxy serverからbackend serverへデータ受信する際のtimeoutを定義する。
- このtimeoutは応答全体の送信遅延ではなく、2回の連続したread処理の間の遅れに対するtimeout。
- proxy_send_timeout
- default 60sec
- proxy serverからbackend serverへデータ送信する際のtimeoutを定義する。
- このtimeoutは応答全体の送信遅延ではなく、2回の連続したwrite処理の間の遅れに対するtimeout。
他、FastCGIを利用している場合は以下のtimeout値を確認する。
FastCGI
- CGIを拡張したもので、web server上でuser programを動作させるinterfaceの1つ。
- 通常のCGIはclientからのrequestごとにprocessを生成・破棄する為大量のrequestがあった場合、その分overheadが多く発生しパフォーマンスの低下が発生する。
- FastCGIは初回request時に生成したprocessをmemory上に確保し続けることで、次回以降のrequestは当該memoryに保持したprocessの実行を行い多くのrequestも処理可能である。
- Nginxのtimeout parameter値は次の通り。
- fastcgi_send_timeout
- fastcgi_read_timeout
- fastcgi_connect_timeout
尚、Grafana自体にtimeoutのparameterは無い。