LoginSignup
3
2

More than 5 years have passed since last update.

NAT Gateway利用時にTCPのコネクションが使えなくなる

Posted at

上記のように、アイドル時間が5分以上継続すると接続がタイムアウトされてしまう。

接続をタイムアウトさせないようにするためには、TCP Keepaliveなどの利用を行うように言われている。

TCP KeepaliveはOS側で下記設定で確認することが出来る。

$ cat /proc/sys/net/ipv4/tcp_keepalive_time
7200

$ cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75

$ cat /proc/sys/net/ipv4/tcp_keepalive_probes
9

上記設定では、

  • アイドル時間が7200秒(2時間)続いていた場合
  • 75秒おきにキープアライブプローブを送信
  • 9回まで送る

という設定になっている。
(多分OSデフォルト?)

そのため、TCPコネクションが死んでいると確認できるまでは、
7200 + 75 * 9 = 7875秒 かかる形となる。

OS標準でのTCP Keepaliveの設定は、sysctl とかで変更することも可能

プログラムからTCP Socketを利用する場合は、
基本的にTCP Keepaliveが無効なSocketとして作られることが多い模様。

そのため、プログラム内部で setsockopt などを使って設定することが必要そう。

rubyだと以下ページとかでSocketのオプションを見れる模様

この辺を参考にTCP Keepaliveを設定するとよさそう

3
2
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
3
2