mongodb が out of memory で起動できない
現象
webサーバーとmongodbを共存させて運用しているサーバーがありました。
先日mongodbのデーモンが停止して、自動起動に失敗していました。
翌朝確認しようとmongodの再起動を試みるも、以下のような状況。
$ sudo service mongod status mongod dead but subsys locked $ sudo service mongod restart Stopping mongod: [FAILED] Starting mongod: Fri Jun 20 22:25:54.088 Assertion: 13524:out of memory AlignedBuilder 0xde8c31 0xdaa3fb 0xda83cc 0xda8660 0x92569d 0x121a2f6 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xde8c31] /usr/bin/mongod(_ZN5mongo11msgassertedEiPKc+0x9b) [0xdaa3fb] /usr/bin/mongod() [0xda83cc] /usr/bin/mongod(_ZN5mongo14AlignedBuilderC1Ej+0x10) [0xda8660] /usr/bin/mongod() [0x92569d] /usr/bin/mongod() [0x121a2f6] terminate called after throwing an instance of 'mongo::MsgAssertionException' what(): out of memory AlignedBuilder bash: line 1: 8757 Aborted numactl --interleave=all /usr/bin/mongod -f /etc/mongod.conf [FAILED]
調査
topコマンドで見ると、php-cgiのプロセスが1個あたり1.x%くらいメモリを消費していた。
lighttpdの子プロセスが64個あるのでその辺りが原因ぽいと考えました。
とりあえず、fastcgiの設定を以下のように変更して、mongodbが起動することまで確認できました。
あとは運用して様子を見ていきます。
変更前
fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/bin/php-cgi", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "64", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "min-procs" => 1, "max-procs" => 1, "idle-timeout" => 20 )) )
変更後
fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/bin/php-cgi", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "5000" ), "min-procs" => 1, "max-procs" => 1, "idle-timeout" => 20 )) )