目次
# sysctl -a # sysctl -a |grep XXXXXX
# vi /etc/sysctl.conf vm.swappiness=0 # sysctl -p <- 反映
パラメータ | 説明 | 設定値 |
---|---|---|
net.ipv4.tcp_keepalive_time | keepaliveのタイムアウト時間(秒) キープアライブプローブが送信される時間 接続が使用されていない場合に、接続を生かしておくためにTCP keepaliveパケットを送信する頻度を指定します。 この値はkeepaliveが有効である場合にのみ使用します。 | 7200 (デフォルト ) 7200秒 = 120分 60 |
net.ipv4.tcp_keepalive_intvl | keepaliveのタイムアウト判定の再試行時間(秒) 相手からキープアライブ応答がなかった場合のキープアライブプローブの間隔 | 75(デフォルト ) 3 |
net.ipv4.tcp_keepalive_probes | keepaliveのタイムアウト判定のリトライ回数 キープアライブプローブの最大回数 | 9( デフォルト ) 3 |
ディフォルト設定値では7200(秒)+75(秒)×9(回)の間はハーフコネクションの状態が続いてしまう。 2時間以上というのは長すぎるだろう。
FWで切断されてしまう場合は、tcp_keepalive_time関係やJavaの切断接続記述子にENABLED=BROKEN追加する
パラメータ | 説明 | 設定値 |
---|---|---|
net.ipv4.tcp_max_syn_backlog | SYNに対するSYN/ACKの応答待ちに使うソケットの最大数 この数値を大きくすることによって、socketの枯渇を防ぐことができます。 | 128(デフォルト) 30720 |
net.ipv4.tcp_fin_timeout | FINのタイムアウト時間(秒) この数値を小さくすることによって、socketの枯渇を防ぐことができます。 | 60(デフォルト) 25 |
net.ipv4.ip_local_port_range | クライアントとして使用できるローカルポートの範囲 デフォルトでは、32768 から 61000 までの 28232 個の中からランダムに選ばれたポート この数値を変更することによって、サーバ発のポート枯渇を防ぐことができます。 | 32768 61000(デフォルト) 1024 65500 |
パラメータ | 説明 | 設定値 |
---|---|---|
net.ipv6.conf.all.disable_ipv6 net.ipv6.conf.lo.disable_ipv6 net.ipv6.conf.default.disable_ipv6 | IPv6周りの設定を有効にするかどうか IPv6は使わない場合無効にしましょう。 例えば、snmpで取得できるTCPコネクション数はIPv6には対応していないので、おかしくなります。 | 0(デフォルト) 1 ※無効 |
net.netfilter.nf_conntrack_max | ESTABLISHEDのリストの最大数(iptablesの管理数) コネクションを保持できない事態を防ぐ | 1048576 ※1セッション350Bとし、メモリ1GB程度に抑える |
net.nf_conntrack_max | ESTABLISHEDのリストの最大数(OS側の管理数) コネクションを保持できない事態を防ぐ 現在値の確認: wc -l /proc/net/nf_conntrack | 1048576 ※1セッション350Bとし、メモリ1GB程度に抑える |
net.core.somaxconn | 接続(ソケット)キューの最大数 カーネルの処理能力以上のトラフィックが届いた場合にバッファをもたせる | 30720 |
net.core.netdev_max_backlog | パケット受信時にキューにつなぐことのできるパケットの最大数 カーネルの処理能力以上のトラフィックが届いた場合にバッファをもたせる | 30720 |
net.netfilter. nf_conntrack_tcp_timeout_established | ESTABLISHEDかつIDLE状態でRESETパケットを投げ、リストから消すまでの時間(秒) 無駄なコネクションは長い時間保持しない | 2000 |
パラメータ | 説明 | 設定値 |
---|---|---|
fs.file-max | オープン可能なファイル数の上限 | 73494(default) |
# cat /proc/sys/fs/file-nr 5594 2114 30000 1. 今までにオープンしたことのあるファイルの最大数 2. 現在オープンしているファイルの総数 3. オープン可能なファイル数の上限(/proc/sys/fs/file-max)
パラメータ | 説明 | 設定値 |
---|---|---|
fs.aio-max-nr | 非同期I/Oコンテキスト Asynchronous I/O context | 150000 |
超えると、io_setup システムコールの戻り値に EAGAIN が返される。
システム全体の予約可能な I/O 記述子の総数 (aio-max-nr) # cat /proc/sys/fs/aio-max-nr すべてのプロセスで予約されている現在の記述子の数 # cat /proc/sys/fs/aio-nr
パラメータ | 説明 | 設定値 |
---|---|---|
vm.swappiness | 実メモリがある状態でスワップを使うかどうか 0にして、実メモリを使い切るまでスワップは使わせないようにしましょう。 | 30 (デフォルト) 0 ※無効 |
vm.max_map_count | mmapやmalloc時にメモリを仮想空間にマッピングできる最大ページ数 マッピングできなくなる事態を防ぐ | 65530 (デフォルト) 300000 |
vm.overcommit_memory | 実メモリ以上にメモリをプロセスに割り当てるオーバーコミットを許すかどうか OOM killerを発生させたくないので、2にしましょう。 | 0 (デフォルト) 2 ※無効 |
vm.overcommit_ratio | 最大仮想メモリ領域 ※SWAP+(RSS*(この値/100) 物理メモリを超えない範囲で少し余裕を持たせる | 95 |
vm.min_free_kbytes | メモリのFREE領域の確保量 メモリ確保の容量を常にあけておく | 524288 (524288/1024 = 512MB) |
パラメータ | 説明 | 設定値 |
---|---|---|
kernel.threads-max | システム全体での最大プロセス数 | 5782(default) 100000 |
kernel.pid_max | pidの最大数 pidを枯渇させない | 131072 |
kernel.panic_on_oops kernel.panic kernel.softlockup_panic kernel.hung_task_panic | ハングアップ時にリブートさせるかどうか | 1 ハングアップしたらリブートさせる |
https://blog.stormcat.io/post/entry/docker-tcp-kernel/
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 16384
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
http://alpha.mixi.co.jp/entry/2014/12171/
LXCを使う上で気をつけること
多数のインスタンスを起動して、多数のプロセスやスレッドが生成されると、ホスト側のスレッド上限値に達したり、PIDが不足しやすいので注意が必要です。
kernel.threads-max
kernel.pid_max
vm.max_map_count
/etc/security/limits.d/90-nproc.conf
の制限値を unlimited にしておくと安心です
一般向けサイト
ITエンジニア向けサイト
英語サイト
Portfolio
Copyright (c) 2024 システムパフォーマンス入門 All Rights Reserved.