LinuxのTCPIPカーネルパラメータ最適化

5260 ワード

LinuxのTCPIPカーネルパラメータ最適化本論文はUbuntu 12.04 LTS Desktop(x 64)のデフォルト構成例(マシンのメモリは4 GB)で、「TCP接続の状態とクローズ方式、およびServerとCientへの影響」「WindowsシステムのTCPパラメータ最適化」を先に読んでTCP最適化に関する知識を知ることを推奨します。
/proc/sys/netディレクトリ
TCP/IPパラメータはすべて/proc/sys/netディレクトリの下にあります。例えば、以下のような重要なパラメータ:
パラメータ(パス+ファイル)
説明
標準値
最適化値
/proc/sys/net/core/rmem_default
デフォルトのTCPデータ受信ウィンドウサイズ(バイト)。
229376
25960
/proc/sys/net/core/rmem_max
最大のTCPデータ受信ウィンドウ(バイト)。
1313137011
513920
/proc/sys/net/core/wmem_default
デフォルトのTCPデータ送信ウィンドウサイズ(バイト)。
229376
25960
/proc/sys/net/core/wmem_max
最大のTCPデータ送信ウィンドウ(バイト)。
1313137011
513920
/proc/sys/net/core/netdev_max_backlog
各ネットワークインターフェースでデータパケットを受信する速度がカーネル処理よりも速い場合、キューに送るパケットの最大数を許可する。
1000
2000
/proc/sys/net/core/somaxconn
システム内の各ポートの最大待ち受けキューの長さを定義し、これは全体のパラメータです。
128
2048
/proc/sys/net/core/optmem_max
各ソケットが許可する最大バッファのサイズを表します。
20480
81920
/proc/sys/net/ipv 4/tcp_mem
TCPスタックがメモリ使用をどのように反映すべきかを決定し、各値の単位はメモリページ(通常は4 KB)である。最初の値はメモリ使用の下限です。第二の値は、メモリ圧力モードがバッファ領域に適用する圧力の上限を開始することである。3番目の値はメモリ使用の上限です。このレベルでは新聞を廃棄してメモリの使用を減らすことができます。これらの値は、より大きなBDPに対して増加することができる(ただし、その単位はバイトではなくメモリページである)。
94011 125351 188022
131772 262144 524288
/proc/sys/net/ipv 4/tcp_rmem
自動調整のためにsocketで使用するメモリを定義します。最初の値は、socket受信バッファに割り当てられた最低バイト数である。二つ目の値はデフォルトです。バッファエリアはシステム負荷が重くない場合にこの値に成長できます。3番目の値は、受信バッファ空間の最大バイト数です。
4096 87380 4011232
8760 25960 4088000
/proc/sys/net/ipv 4/tcp_wmem
自動調整のためにsocketで使用するメモリを定義します。最初の値は、socket送信用バッファに割り当てられた最低バイト数である。二つ目の値はデフォルトです。バッファエリアはシステム負荷が重くない場合にこの値に成長できます。3番目の値は送信バッファ空間の最大バイト数である(この値はwmemumaxで上書きされる)。
4096 16384 4011232
8760 25960 4088000
/proc/sys/net/ipv 4/tcp_keepalive_時間
TCP送信keepaliveプローブメッセージの間隔時間(秒)は、TCP接続が有効かどうかを確認するために使用される。
7200
1800
/proc/sys/net/ipv 4/tcp_keepalive_intvl
プローブメッセージが応答を得られない場合、メッセージの間隔(秒)が再送信される。
75
30
/proc/sys/net/ipv 4/tcp_keepalive_probes
TCP接続が失敗したと認定する前に、最大何個のkeepaliveプローブメッセージを送信しますか?
9
3
/proc/sys/net/ipv 4/tcp_sack
選択された応答(1は有効)を有効にし、受信した新聞文を選択的に応答することにより性能を向上させ、送信者に失われた報文セグメントのみを送信させる(広域ネットワーク通信については)このオプションを有効にしますが、CPUの占有率を増加させます。
1
1
/proc/sys/net/ipv 4/tcp_fack
転送応答を有効にして、選択応答(SACK)を行い、混雑状況を減らすことができます。このオプションも有効にしてください。
1
1
/proc/sys/net/ipv 4/tcp_timestamps
TCPタイムスタンプ(TCPヘッダで12バイト増加する)は、再送タイムアウトよりも正確な方法(RFC 1323参照)でRTTの計算を有効にし、より良いパフォーマンスを達成するために、このオプションを有効にするべきである。
1
1
/proc/sys/net/ipv 4/tcp_windowscaling
RFC 1323で定義されたwindow scalingを有効にして、64 KBを超えるTCPウィンドウをサポートするには、この値(1は有効化を示す)を有効にする必要があり、TCPウィンドウは最大1 GBまでで、TCP接続の両方が有効になった時にのみ有効になります。
1
1
/proc/sys/net/ipv 4/tcp_syncookies
TCPの同期タブを開くかどうか、カーネルがCONFIG_を開く必要があります。SYN_COOKIES項目をコンパイルして、同期ラベルはソケットが多すぎて接続しようとしたときにオーバーロードを引き起こすことを防ぐことができます。
1
1
/proc/sys/net/ipv 4/tcp_tw_reuse
TIME-WAIT状態のsocket(TIME-WAITのポート)を新しいTCP接続に使用できるかどうかを示します。
0
1
/proc/sys/net/ipv 4/tcp_tw_recycle
TIME-WAITソケットをより速く回収することができます。
0
1
/proc/sys/net/ipv 4/tcp_finタイムアウト
本端が切断されたsocket接続については、FIN-WAIT-2の状態にTCPが保持される時間(秒)が設定されています。相手は接続を切断したり、接続を終了しないまま死んでしまうかもしれません。
60
30
/proc/sys/net/ipv 4/ip_local_ぽろぽろレンゲ
TCP/UDPプロトコルで使用可能なローカルポート番号を表します。
32768 61000
1024 65000
/proc/sys/net/ipv 4/tcp_max_syn_backlog
まだ相手の確認が得られていない接続要求に対しては、キューの最大数を保存することができます。サーバーに頻繁にオーバーロードがあるなら、この数字を増やしてみてもいいです。
2048
2048
/proc/sys/net/ipv 4/tcp_low_latency
TCP/IPスタックが高スループットで低遅延の場合に適応できるようにするには、このオプションは無効にすべきです。
0
/proc/sys/net/ipv 4/tcp_westwood
送信者側の混雑状態制御アルゴリズムを有効にし、スループットの評価を維持し、帯域幅全体の利用状況を最適化しようとすることができ、WAN通信に対してこのオプションを有効にするべきである。
0
/proc/sys/net/ipv 4/tcp_ビック
高速長距離ネットワークのためにBinary Increase Congestionを有効にすると、GB速度で動作するリンクをより良く利用できます。WAN通信にはこのオプションを有効にするべきです。
1
/etc/syssctl.com nfファイル
/etc/syssctl.com nfは、実行中のLinuxシステムを変更できるインターフェースです。これはいくつかのTCP/IPスタックと仮想メモリシステムの高級オプションを含み、Linuxネットワーク構成を制御するために使用できます。/proc/sys/netディレクトリの内容の一時性のため、TCPIPパラメータの修正を/etc/syssctl.comファイルに追加してファイルを保存し、コマンド「/sbin/syssctl–p」を使って直ちに有効にすることを提案します。具体的な修正案は上記を参照する。
net.co re.rmem_default=25960
net.co re.rmem_max=513920
net.co re.wmem_default=25960
net.co re.wmem_max=513920
net.co re.netdev_max_backlog=2000
net.co re.somaxconn=2048
net.co re.optmem_max=81920
net.ipv 4.tcp_mem=13137172 262144 524288
net.ipv 4.tcp_rmem=8760 25960 4088000
net.ipv 4.tcp_wmem=8760 25960 4088000
net.ipv 4.tcp_keepalive_time=1800
net.ipv 4.tcp_keepalive_intvl=30
net.ipv 4.tcp_keepalive_probes=3
net.ipv 4.tcp_sack=1
net.ipv 4.tcp_fack=1
net.ipv 4.tcp_timestamps=1
net.ipv 4.tcp_windowscaling=1
net.ipv 4.tcp_syncookies=1
net.ipv 4.tcp_tw_reuse=1
net.ipv 4.tcp_tw_recycle=1
net.ipv 4.tcp_fintimeout=30
net.ipv 4.ip_local_ぽろぽろランゲ=1024 65000
net.ipv 4.tcp_max_syn_backlog=2048
命令を実行すると直ちに発効する
sudo sysctl -p  
ファイル/etc/security/limits.com nfを同時に修正します。
* soft nofile 3000000
* hard nofile 3000000
root soft nofile 3000000
root hard nofile 3000000
* soft nopro 1000000
* hard nopro 1000000
root soft nopro 1000000
root hard nopro 1000000