2017年03月13日
Tweet
昨日の記事の続きです。
iptables restore を行うとメモリが枯渇するようだということに気づきました。
そしてルールは大量です。
で、気になったのですが iptables は一体どのぐらいのルールをかけるのだろうか、と。
なお僕は数台のサーバーを管理していますが、その中でルール数が多いのは2台。
1台は以下の通り1Gのメモリです。(そしてこちらが今回のトラブルです)
# free -h
total used free shared buffers cached
Mem: 988M 562M 426M 0B 3.7M 20M
-/+ buffers/cache: 538M 450M
Swap: 4.0G 33M 4.0G
# iptables -nvL |wc -l
46796
iptables のルール数は上記の通り約47,000
もう1台は以下の通り
# free -h
total used free shared buffers cached
Mem: 9.6G 7.1G 2.5G 548M 498M 4.4G
-/+ buffers/cache: 2.2G 7.4G
Swap: 4.9G 230M 4.7G
# iptables -nvL |wc -l
54593
iptables のルール数は上記の通り約54,000
これで、ルールをなるべく統一したいので、マージしながら作業していました。
そしてある程度マージが完了し、ルール数を調整しながら iptables のルール再読込行ったところ、問題が発生しました。
ちなみに上記の46796で、やく2,000ルール増やすともうダメです。結構ギリギリのラインみたい。
で、いろいろ確認していると、 iptables がルールを読み込むときには、スワップ領域ではないところにメモリを確保するようです。そしてそれはルール数に依存するようです。
なお iptables の最大のルール数は32bitの場合に 3800万のようです。
1つのルールごとに少しずつ消費するようなのですが、結局1Gでは超過してしまうということのようです。
ということで、メモリを増設して様子を見たいと思います。

iptables restore を行うとメモリが枯渇するようだということに気づきました。
そしてルールは大量です。
で、気になったのですが iptables は一体どのぐらいのルールをかけるのだろうか、と。
なお僕は数台のサーバーを管理していますが、その中でルール数が多いのは2台。
1台は以下の通り1Gのメモリです。(そしてこちらが今回のトラブルです)
# free -h
total used free shared buffers cached
Mem: 988M 562M 426M 0B 3.7M 20M
-/+ buffers/cache: 538M 450M
Swap: 4.0G 33M 4.0G
# iptables -nvL |wc -l
46796
iptables のルール数は上記の通り約47,000
もう1台は以下の通り
# free -h
total used free shared buffers cached
Mem: 9.6G 7.1G 2.5G 548M 498M 4.4G
-/+ buffers/cache: 2.2G 7.4G
Swap: 4.9G 230M 4.7G
# iptables -nvL |wc -l
54593
iptables のルール数は上記の通り約54,000
これで、ルールをなるべく統一したいので、マージしながら作業していました。
そしてある程度マージが完了し、ルール数を調整しながら iptables のルール再読込行ったところ、問題が発生しました。
ちなみに上記の46796で、やく2,000ルール増やすともうダメです。結構ギリギリのラインみたい。
で、いろいろ確認していると、 iptables がルールを読み込むときには、スワップ領域ではないところにメモリを確保するようです。そしてそれはルール数に依存するようです。
なお iptables の最大のルール数は32bitの場合に 3800万のようです。
1つのルールごとに少しずつ消費するようなのですが、結局1Gでは超過してしまうということのようです。
ということで、メモリを増設して様子を見たいと思います。