あるあるアプリサーバーの各種タイムアウト値まとめ

## 概要

実務でよく使う AWS のサービスや、サーバーアプリケーションについて、タイムアウトの時間を整理したので、備忘メモ。

## 構成

![timeout_infra構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529884/9c92a176-3d41-66a4-4ea2-1be3bc9a7d79.jpeg)

## シーケンス図

[![alt](http://www.plantuml.com/plantuml/png/bP9FQp8n48Vl-oboV8NNBr2A-0TQ2jA2BVIW8Z4xgy4usIRPgj--ayJiciKUUjemloUJ9zaPMyUDQuwggEahXQmvEZPJ4kZ3BHDXrGjrKpuPVGMgB9pKjPA2EwbnhdavvOgZ0ED9hhOP-hgJUFO1-aKMDP_lpoy-Qavs9nah2dOrOSFHYCvyOFyMyDM0TGCVLQ5C1-HrBfpyvWx2qOoXfgM2oZ5THNZPtMNzPYHvB82N7_88kd45yr3e70m93yhh5KQNpPvWC1iN-V-i3RQwlAJohKVeqpT9pIVpwVfnfX61S8rCbWfOsoHYmIOyIcj3fzP6doyR4RTsEYcmW6Mghd0P7jTlireSm0qJtrNyXZlbav4EXdUk5OJwrqgM62oZYG7UcYIUddsVROX-UsxuGHfg6uFiFqJapy8bz9LZnsnwRAtHmY370tOp4ABwdIMccyau41ay9jdcg7u0)](http://www.plantuml.com/plantuml/png/bP9FQp8n48Vl-oboV8NNBr2A-0TQ2jA2BVIW8Z4xgy4usIRPgj--ayJiciKUUjemloUJ9zaPMyUDQuwggEahXQmvEZPJ4kZ3BHDXrGjrKpuPVGMgB9pKjPA2EwbnhdavvOgZ0ED9hhOP-hgJUFO1-aKMDP_lpoy-Qavs9nah2dOrOSFHYCvyOFyMyDM0TGCVLQ5C1-HrBfpyvWx2qOoXfgM2oZ5THNZPtMNzPYHvB82N7_88kd45yr3e70m93yhh5KQNpPvWC1iN-V-i3RQwlAJohKVeqpT9pIVpwVfnfX61S8rCbWfOsoHYmIOyIcj3fzP6doyR4RTsEYcmW6Mghd0P7jTlireSm0qJtrNyXZlbav4EXdUk5OJwrqgM62oZYG7UcYIUddsVROX-UsxuGHfg6uFiFqJapy8bz9LZnsnwRAtHmY370tOp4ABwdIMccyau41ay9jdcg7u0)

## タイムアウト値

- CloudFront
    - OriginReadTimeout
        - オリジンからのレスポンスを待つ時間
        - Min: 1s, Max: 60s, Default 60s
    - [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CustomOriginConfig.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CustomOriginConfig.html)
- ALB
    - Connection idle timeout
        - 接続を維持する時間。クライアントとの接続、バックエンドとの接続両方に適用される。
    - [https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html)
- Nginx
    - client_header_timeout
        - Client からのリクエストヘッダー送信タイムアウト時間
        - すべてのヘッダー送信がこの時間内に完了する必要がある
        - default: 75s
    - client_body_timeout
        - Client からのリクエストボディ送信タイムアウト時間
        - Client サーバがこの期間にリクエストを一切送らなかった場合、クローズされる。
        - default: 60s
    - [http://nginx.org/en/docs/http/ngx_http_core_module.html](http://nginx.org/en/docs/http/ngx_http_core_module.html)
    - proxy_connect_timeout
        - backend サーバへの接続タイムアウト時間
        - default: 60s
    - proxy_send_timeout
        - backend サーバへの送信タイムアウト時間
        - default: 60s
    - proxy_read_timeout
        - backend サーバからの読み込みタイムアウト時間
        - backend サーバがこの期間にレスポンスを一切返さなかった場合、クローズされる。
        - default: 60s
    - [http://nginx.org/en/docs/http/ngx_http_proxy_module.html](http://nginx.org/en/docs/http/ngx_http_proxy_module.html)
- Uwsgi
    - harakiri
        - リクエスト処理のタイムアウト時間
        - この時間内に終わらなかった処理は中断され、実行していたワーカープロセスは停止させられる
        - [https://uwsgi-docs.readthedocs.io/en/latest/Glossary.html#glossary](https://uwsgi-docs.readthedocs.io/en/latest/Glossary.html#glossary)
    - socket-timeout
        - ソケット接続のタイムアウト
    - socket-send-timeout, socket-write-timeout
        - ソケット接続のデータ送受タイムアウト
        - ソケット通信用のオプション（[SO_SNDTIMEO](https://linux.die.net/man/7/socket)）を設定する
    - [https://uwsgi-docs.readthedocs.io/en/latest/Options.html](https://uwsgi-docs.readthedocs.io/en/latest/Options.html)