こんにちは、ベジタブルファーストを始めて本格的に減量を始めました。
目指すは腹筋8パックです。
さて、本日は表題のとおり備忘録となりますので、完全に自分用ですね。
背景
運用中のWebサイトで外形監視にアラートが頻発しました
原因を調査したところ、どうやら Recv-Q が溜まっており、接続がESTABLISHED状態のTCPコネクションのソケットが枯渇してそうでした
そのため net.core.somaxconn と net.ipv4.tcp_max_syn_backlog の上限を引き上げて対応した
※本来はこの対応に加えて、アプリケーション側でも設定変更が必要になる場合が多いです
それぞれの項目について
※それぞれかなりややこしいので分かりやすく簡素に書いています
net.core.somaxconn
→TCP接続が完全に確立(ESTABLISHED状態)したコネクション数の最大値
=サーバーが同時に処理できる「接続待ち」の数の制限
デフォルト値:128
net.ipv4.tcp_max_syn_backlog
→SYNパケットを受信は受信したが、ACKを受け取っていないコネクション(SYN_RECV状態)を保持する最大値
=新しい接続要求が来たときに、一時的に保留する数を制限
デフォルト値:128
手順
・一時的に反映する
sysctl -w net.core.somaxconn=1024
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
・恒久的に反映
vi /etc/sysctl.conf
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 2048
・カーネルの再読み込み
sysctl -p
・反映確認
sysctl net.core.somaxconn
or
cat /proc/sys/net/core/somaxconn
sysctl net.ipv4.tcp_max_syn_backlog
or
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
まとめ
いかがでしたでしょうか。
今回は完全に備忘録でしたが、自分でまとめている過程で改めて理解できた気がします。
最近アウトプットが楽しく感じつつあるので、また学んだことがあれば備忘録がてら書きたいと思います。
それでは