症状
同じ物理マシンの同時アプリケーション・サービス・タイムアウト上で複数の仮想マシンは、他の現象は、ping仮想および物理マシン厳しいパケット損失にアクセスすることはできません。
誤動作の原因
仮想マシンの物理マシンでは、多くの確立された接続の記録とそこパケットロスが満たされている物理マシンのコネクショントラッキングテーブルにつながる、多数の接続を確立します。
治療
接続記録などのタイムアウトが設立され、TIME_WAIT、CLOSE_WAIT、FIN_WAITを減らし、接続されたトラックレコードの最大数を増やすために、カーネルパラメータに物理マシンを調整します。
調査プロセス
ビジネスレベルの調査、仮想マシンの帯域幅があったかどうかの分析が、リアルタイムトラフィックの監視と調査を開始し、何の問題を発見した、失敗しました。問題は、ホストの仮想マシン上では、pingの失敗、二度目に発生した場合「のping:sendmsgの:操作は許可されていません」というエラーに:
#のpingの 172.16。3.5 PING 172.16。3.5(172.16。3.5)56(84 データの)バイト。 ピング:sendmsgの:動作許可されていない のping :sendmsgの:動作許可されていない のping :sendmsgの:動作許可されていない のping:sendmsgの:動作許可されていません
カーネルログの表示、次のように与えられています:
#dmesgの| 尾 [ 64802472.971773 ] nf_conntrack:表フル、ドロップパケット [ 64802472.972242 ] nf_conntrack:表フル、ドロップパケット [ 64802472.973668 ] nf_conntrack:表フル、ドロップパケット [ 64802472.978622 ] nf_conntrack:表フル、ドロップパケット [ 64802472.988458 ] nf_conntrack:テーブルがいっぱい、ドロップパケット 【64802472.991945 ] nf_conntrack:表フル、パケットをドロップ [ 64802472.998772 ] nf_conntrack:表フル、パケットをドロップ [ 64802472.999542 ] nf_conntrack:表フル、パケットをドロップ [64802473.001464 ] nf_conntrack:表フル、ドロップパケット [ 64802473.001768 ] nf_conntrack:表フル、ドロップパケット
これは、コネクション追跡テーブルのためには、完全なパケット損失であることがわかりました。実際には、この問題は、一度、TIME_WAITの接続記録の多数の存在によるものであった、そして今、この問題は多くの確立された接続レコードの存在によって引き起こされます。
#の猫の/ proc /ネット/ nf_conntrack | AWK ' /^.*tcp.*$/ {カウント[$ 6] ++} END {(数の状態)の印刷状態、[状態]カウント} ' LAST_ACK 36 SYN_RECV 52 CLOSE_WAIT 350 CLOSE 844が ESTABLISHED 246265 FIN_WAIT 4 SYN_SENT 993を TIME_WAIT 9996
問題は簡単に解決するために、関連するカーネルパラメータを調整することにより、処理することができます。
#のsysctl -a | grepのnf_conntrack net.nf_conntrack_max = 2097152 net.netfilter.nf_conntrack_max = 2097152 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_established = 3600
/etc/sysctl.confに上記のパラメータは、sysctlを-p効果を実行します。
別のnet.netfilter.nf_conntrack_bucketsパラメータは、ハッシュテーブルのサイズを指定します。4.8以上のカーネルによって修飾のsysctlは、4.8より前のカーネルは読み取り専用で、/ SYS /モジュール/ nf_conntrack /パラメータ/ HASHSIZEを変更することによって変更することができます。
参考資料
nf_conntrack:テーブルのフル、パケットのフィナーレを落とします。
sysctlのnf_conntrack_bucketを使用することにより
[段ピットまとめ] nf_conntrack:完全なテーブル、パケットをドロップ