VPS 環境下で共有メモリ(shmmax=32MB)を増やしてみた

VPS環境で、メモリ不足でgemが使えない? (Segmentation fault) に書いた
KDDI の VPS スケーラブルプラン VS-02 の環境を使い始めました。
cron でスクリプトを動かしたり Googlebot がやって負荷が上がると
メモリ関係のエラーが出始めました。やはり 360MB は辛いのか?

fork: Cannot allocate memory
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Encode/Encode.so: failed to map segment from shared object: Cannot allocate memory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/XSLoader.pm line 70.
error while loading shared libraries: libproc-3.2.7.so: cannot map zero-fill pages: Cannot allocate memory

しかし、まだ空きメモリはあります。
共有メモリ関係でエラーが起きているらしい。

# grep Mem /proc/meminfo
MemTotal: 368640 kB
MemFree: 236440 kB
# sysctl kernel.shmall
kernel.shmall = 2097152
# sysctl kernel.shmmax
kernel.shmmax = 33554432

shmall システム全体の共有メモリの最大サイズ(ページ)2097152×4KB = 8GB
shmmax 共有メモリ・セグメントの最大サイズ(バイト)33554432 = 32MB

利用可能メモリ 32MB は明らかに少なそうなので、128MB に増やしてみました。
「実メモリの4分の1」が目安らしいですが、少し多めに。
shmall がデフォルト 8GB もあって大丈夫なのかは、分かりません。

# sysctl -w kernel.shmmax=134217728
# vi /etc/sysctl.conf
kernel.shmmax = 134217728

操作途中でメモリ不足のために sysctl とか kill コマンドすら
実行できなくなりましたが、そんなところはさすがに仮想環境。
Virtuozzo / Parallels Power Panel から SIGTERM シグナルを
送って解決しました。

https://115.146.xx.xx:4643/vz/cp/ あたり。

やっぱり、いろいろ始めるとメモリ 360MB では辛そう。
遅くなるんじゃなくて、メモリ不足のエラーで止まってしまうのは対処が面倒。
スワップには対応して(というか、あるいは仮想的でも
占有でなくても良いので利用可能なメモリを増やして)欲しいなあ。

この記事へのコメント

pfhcrxrlli
2013年08月31日 03:53
ナイキ エアフォース ynike Free iナイキ エアフォース hナイキ エアフォース bナイキ フリーnike free run tエアジョーダン激安
cナイキ スニーカー kエアジョーダン激安
r

この記事へのトラックバック