【備忘録】net.core.somaxconn と net.ipv4.tcp_max_syn_backlog について備忘録

こんにちは、ベジタブルファーストを始めて本格的に減量を始めました。

目指すは腹筋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

 

まとめ

いかがでしたでしょうか。

今回は完全に備忘録でしたが、自分でまとめている過程で改めて理解できた気がします。

最近アウトプットが楽しく感じつつあるので、また学んだことがあれば備忘録がてら書きたいと思います。

それでは

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA