はじめに
OSにデフォルトで掛かっている様々な制限を外し、ハードウェアの限界性能を引き出す。
主に、オープンファイル数の上限、起動プロセス数の上限、TCP/IPのポート数の上限、TCPコネクションの再利用促進、TCPの不正対策、IPv6無効化による資源の効率化、等々。
※カーネルパラメータの設定変更は自己責任でお願いします。
※必ず十分にテストをしてから、適用してください。
OSのファイル数上限、ユーザの起動プロセス数上限を変更
/etc/systemd/system.conf を開いて以下を変更する
DefaultLimitNOFILE=1048576
DefaultLimitNPROC=1048576
/etc/sysctl.conf を開いて以下を変更する
# システム全体のプロセス数の上限
#kernel.threads-max = 29990
kernel.threads-max = 1060863
# システム全体のファイルディスクリプタの上限
#fs.file-max = 379862
fs.file-max = 5242880
# TCP/IPの送信用ポート範囲の変更
#net.ipv4.ip_local_port_range = 32768 60999
net.ipv4.ip_local_port_range = 1024 65535
# TCPソケットが受け付けた接続要求を格納するキューの最大長
#net.core.somaxconn = 128
net.core.somaxconn = 65535
# ソケット当たりのSYNを受け付けてACKを受け取っていない状態のコネクションの保持可能数
#net.ipv4.tcp_max_syn_backlog = 128
net.ipv4.tcp_max_syn_backlog = 65535
# カーネルがキューイング可能なパケットの最大個数
#net.core.netdev_max_backlog = 1000
net.core.netdev_max_backlog = 16384
# TIME_OUT 状態のコネクションを再利用
#net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_reuse = 1
#TCPのTIME_WAITの再利用を高速化(Linux4.12以降廃止)
net.ipv4.tcp_tw_recycle = 0
#TCPのFINを送信してからのタイムアウト時間
#net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_fin_timeout=10
#通信がアイドル状態になった後にスロースタートさせるか
#net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_slow_start_after_idle = 0
# スプーフィング対策 送信元IPの偽装防止
net.ipv4.conf.all.rp_filter = 1
# RFC1337に準拠させる。
# TIME_WAIT状態のときにRSTを受信した場合、TIME_WAIT期間の終了を待たずにそのソケットをクローズする
#net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_rfc1337 = 1
# IPv6 無効化(無効化しない場合コメントアウト)
#net.ipv6.conf.all.disable_ipv6=1
#net.ipv6.conf.default.disable_ipv6=1
# SYN flood攻撃対策(負荷テスト時など対策しない場合0にする)
#net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syncookies = 0
設定反映
sysctl -p
設定確認
sysctl -a
OS再起動
# shutdown -r now
設定が反映されている事を確認する
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14995
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1048576
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited