- 2010 年 5 月 25 日
- [ Other ]
lvsの使い方は3種類あるのですが、そのうちの一つPREROUTING(NAT)を使っていたお客様のサーバでトラブルがありました。
以下その備忘録です。
■障害
コンテンツが閲覧できたり出来なかったりする現象が発生。dmesgを見ると
ip_conntrack: table full, dropping packet.
が出力。NATテーブルが枯れていたことがわかりました。
■現在のNATテーブルの利用量 /proc/slabinfo
slabinfo – version: 2.0
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> ….
:
ip_conntrack 1089 1141 512 7 1 : tunables 54 27 8 : slabdata 163 163 0
:
■現在のNATテーブルの最大値 /proc/sys/net/ipv4/ip_conntrack_max
linuxのカーネルは、メモリ容量にあわせてこの値を自動的に増やしてくれるのですが、それは2Gまでで、2G以上搭載のマシンでは増やしてくれないようです。
1Gの場合:32744
2Gの場合:65536
4Gの場合:65536
:
■NATテーブルの最大値の変更方法
この最大値は、ip_contrackのhashsizeで決定されるようです。
1Gの場合:4096
2Gの場合:8192
4Gの場合:8192
:
今回、メモリを4G搭載のマシンでip_conntrack_maxを倍にしたかったので、
/etc/modprobe.confに
options ip_conntrack hashsize=16384
を記載して再起動。
再起動後、/proc/sys/net/ipv4/ip_conntrack_maxは倍の131072になりました。