🕌

Nginx で (99: Cannot assign requested address) のエラーが頻発する件

2021/02/14に公開

問題

ElasticBeanstalk 環境で負荷テストを行なった際、以下のエラーが頻発。

 [crit] connect() to 127.0.0.1:8080 failed (99: Cannot assign requested address)

ターゲット側の 5XX エラーが頻発 😥
cloudwatch dashboard

TIME_WAIT がいっぱい。。。

$ netstat -an | grep TIME_WAIT | wc -l
28240 

対応

TIME-WAIT ソケットの再利用を有効にする。

$ sudo sysctl -w net.ipv4.tcp_tw_reuse=1

ターゲット側の 5XX エラーもなくなった 😄
cloudwatch dashboard

半分くらいに減った。

$ netstat -an | grep TIME_WAIT  | wc -l
14470

ElasticBeanstalk での対応

.ebextensions/net-ipv4-tcp_tw_reuse.config
container_commands:
  00-cmd:
    test: '[ ! -f /root/.net-ipv4-tcp_tw_reuse.txt ]'
    command: |
      sysctl -w net.ipv4.tcp_tw_reuse=1
      logger -t net-ipv4 "sysctl -w net.ipv4.tcp_tw_reuse=1"
      touch /root/.net-ipv4-tcp_tw_reuse.txt
      logger -t net-ipv4 "touch .net-ipv4-tcp_tw_reuse.txt"

参考

Discussion