linuxの話です。
web関連でもlinuxのカーネルパラメータが実は大事だということがたまにあるらしい。
クラウドを使っててもawsのec2なんかは実は結構見落とされがちなだけで結構効果が出たりするとのこと
散財してるノウハウをまとめてみた。
ちなみにcentos7.7では実に800種類ほどのカーネルパラメータが存在する。
OS屋さんでもない限りこれを把握するのは難しそう。。。
$ cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) $ sysctl -a | wc sysctl: reading key "net.ipv6.conf.all.stable_secret" sysctl: reading key "net.ipv6.conf.default.stable_secret" sysctl: reading key "net.ipv6.conf.ens192.stable_secret" sysctl: reading key "net.ipv6.conf.lo.stable_secret" 809 2538 28726
# 共有メモリの最大サイズ。サーバーの搭載メモリ(1GB)に合わせて変更 kernel.shmmax # システム全体の共有メモリ・ページの最大数 kernel.shmall # システム全体のプロセス数の上限 kernel.threads-max # TCPソケットが受け付けた接続要求を格納する、キューの最大長。hard limit的な役割 net.core.somaxconn # ソケット当たりのSYNを受け付けてACKを受け取っていない状態のコネクションの保持可能数。 net.ipv4.tcp_max_syn_backlog # ソケットキューのサイズ net.ipv4.tcp_tw_reuse # TCPの受信バッファサイズの最大値 net.core.rmem_max # TCPの送信バッファサイズの最大値 net.core.wmem_max # TCPのTIME_WAITを再利用するかどうか net.ipv4.tcp_tw_reuse # TCPのFINを送信してからのタイムアウト時間 net.ipv4.tcp_fin_timeout # tcpのSYNを送信するリトライ回数 net.ipv4.tcp_syn_retries # synflood攻撃対策 net.ipv4.tcp_syncookies # TCP/IPの送信時に使用するポートの範囲。エフェメラルポートに使用する範囲なので枯渇しないように設定 net.ipv4.ip_local_port_range # # 設定した値が大きすぎると、システムのポート、ファイルの記述子、およびメモリーが制御できなくなる。 # 設定した値が小さすぎると、システムは、遅延したパケットをリークする。 net.ipv4.tcp_max_tw_buckets # net.ipv4.tcp_orphan_retries # net.ipv4.tcp_keepalive_probes # net.core.netdev_max_backlog # RFC1337に準拠させる net.ipv4.tcp_rfc1337