---
# System prepended metadata

title: Webサーバーのタイムアウト設定について

---

# Webサーバーのタイムアウト設定について

## Keep-Alive
HTTP通信を切断せずに送受信できるように、定期的に送信される通信のこと。

### HTTP Keep-Alive
HTTP1.1では、Keep-Aliveを用いて、レスポンスを返した後も接続を再利用できるようになっている。ひとつのコネクションの中に複数のリクエストとレスポンスを含めることができる。


### Nginxの設定
`keeepalive_requests`と`keepalive_timeout`でKeep-Aliveの設定を変更することができる。
* keepalive_requests
    * 1つの接続で許可するリクエストの数
* keepalive_timeout
    * HTTP通信を何秒でタイムアウトするか
    * デフォルト値: keepalive_timeout 65

## HTTP Clientの設定

### Go http.Client
`http.Client.Timeout`でタイムアウト設定を指定することができる。
TCP接続でより細くタイムアウト時間を制御することも可能。


ProductionでGoのhttp.Clientを使う時は常に指定する方が良い。
→ 参考: [Don’t use Go’s default HTTP client (in production)](https://medium.com/@nate510/don-t-use-go-s-default-http-client-4804cb19f779)