BLOGTIMES
2021/02/06

高負荷サーバでは net.core.somaxconn の設定に注意

  linux  tuning  networking 
このエントリーをはてなブックマークに追加

外部から多数のコネクションを受け付けるサーバが遅いと思ったら、コネクションを取りこぼしていました。

具体的には net.core.somaxconn の値が Linux 5.4 以前はデフォルトが 128 とかなり小さな値で、これがボトルネックになってしまっていました。このカーネルパラーメーターは TCP ソケットの listen() のバックログのキューの深さを表しているので、多数の接続を受け付ける場合にはこれを大きくしておく必要があります。

現在の設定値を確認するのはこんな感じでできます。

# sysctl net.core.somaxconn net.core.somaxconn = 128

そして、値の変更はこんな感じでできます。

echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf sysctl -p

プロセスが起動するときに net.core.somaxconn の値を読み込んでいることがあるので、値の反映後に httpd などの daemon も再起動してやる必要もあります。

参考

/proc/sys/net/ipv4/* Variables

somaxconn - INTEGER
Limit of socket listen() backlog, known in userspace as SOMAXCONN.
Defaults to 4096. (Was 128 before linux-5.4)
See also tcp_max_syn_backlog for additional tuning for TCP sockets.

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12276
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン