PHPのMDB2が下記のようなエラーをはいている。そんなとき。
At prepare(): MDB2 Error: connect failed
# あぁ、こうやって公の場にさらそうと操作ログを確認すると、自分の行動の不可思議さに気がつきますね。何でログ見てないんだとか、場当たりてきな対応にすごい反省する。操作ログはいつもとっているものの見返すことなんてめったにないからね。書いてみるだけでも勉強になります。
詳細は恥ずかしいので→
PostgreSQLに接続できないということなので、ローカルでコマンドラインから接続を試みる。
# psql -l -U postgres
psql: FATAL: the database system is in recovery mode
データベースシステムがリカバリモードで動いてる?よくわからんが再起動。
# /etc/rc.d/init.d/postgresql restart
postgresql サービスを停止中: [失敗]
postgresql サービスを開始中: [ OK ]
# tail /var/lib/pgsql/pgstartup.log
LOG: logger shutting down
LOG: logger shutting down
LOG: logger shutting down
LOG: logger shutting down
LOG: logger shutting down
LOG: logger shutting down
LOG: logger shutting down
LOG: logger shutting down
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 12808) running in data directory "/var/lib/pgsql/data"?
再起動失敗です。サービス開始中がOKになっていkるけれど、ログを見ると失敗しています。まぁ、停止が失敗してますからね。
とりあえず再起動ではなく停止を試みますがやっぱりだめです。
# /etc/rc.d/init.d/postgresql stop
postgresql サービスを停止中: [失敗]
# /etc/rc.d/init.d/postgresql stop
postgresql サービスを停止中: [失敗]
kill -TERMして見ますがだめだったのでkill -KILL で強制終了
# ps aux | grep postgres
postgres 6751 0.0 0.1 11616 268 ? S Jul02 0:21 postgres: logger process
postgres 12595 0.0 0.1 22860 460 ? S Jul02 0:00 postgres: postgres svsv_sendai 127.0.0.1(3749) startup
postgres 12808 0.1 0.1 21836 404 ? S Jul02 3:48 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
root 27173 0.0 0.2 4964 740 pts/0 R+ 11:21 0:00 grep postgres
# kill -TERM 12595
# kill -TERM 12808
postgres 6751 0.0 0.1 11616 268 ? S Jul02 0:21 postgres: logger process
postgres 12595 0.0 0.1 22860 460 ? S Jul02 0:00 postgres: postgres svsv_sendai 127.0.0.1(3749) startup
postgres 12808 0.1 0.1 21836 404 ? S Jul02 3:48 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
root 27173 0.0 0.2 4964 740 pts/0 R+ 11:21 0:00 grep postgres
# kill -KILL 12808
# kill -KILL 12595
# ps aux | grep postgres
root 27364 0.0 0.2 4964 736 pts/0 R+ 11:34 0:00 grep postgres
きちんとプロセスいなくなった。
強制終了したのでpidが残ってしまっています。なので手動削除してから起動を試みます。
# sudo rm /var/lib/pgsql/data/postmaster.pid
# /etc/rc.d/init.d/postgresql start
postgresql サービスを開始中: [ OK ]
ちゃんと起動したようです。
# ps aux | grep postgres
postgres 27438 1.1 1.1 21832 2852 ? S 11:34 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
postgres 27440 0.0 0.2 11612 592 ? S 11:34 0:00 postgres: logger process
postgres 27442 0.0 0.3 21832 860 ? S 11:34 0:00 postgres: writer process
postgres 27443 0.0 0.2 12612 588 ? S 11:34 0:00 postgres: stats buffer process
postgres 27444 0.0 0.3 11844 768 ? S 11:34 0:00 postgres: stats collector process
root 27460 0.0 0.2 4968 740 pts/0 R+ 11:35 0:00 grep postgres
# psql -l -U postgres
List of databases
Name | Owner | Encoding
---------------+----------+----------
postgres | postgres | UTF8
serverxserver | postgres | UTF8
ss_test | postgres | UTF8
svsv_sapporo | postgres | UTF8
svsv_sendai | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(7 rows)
OKつながった。後はDBに接続して、SQL発行して値が取れるかチェックして完了。
ログをきちんと確認していなかったのだけど、症状的にはPostgreSQL エラー (recovery modeって何だ)が原因だと思われる。スペックの悪いVMWareゲストでコネクションは相当はってたので、それのせいでコネクションがたまっていったのかなと。
と思って冷静に過去ログを見てみるとメモリ不足ですね。コネクション以前(w
やっぱりVMWareで無理してるから。
# cat ./messages.1 | grep post
Jul 2 00:08:12 lowtech kernel: Out of memory: Killed process 24280 (postmaster).
Jul 2 01:09:31 lowtech kernel: postmaster invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Jul 2 01:07:09 lowtech kernel: Out of memory: Killed process 12811 (postmaster).
Jul 2 01:07:56 lowtech kernel: Out of memory: Killed process 26344 (postmaster).
Jul 2 01:26:21 lowtech kernel: Out of memory: Killed process 26345 (postmaster).
Jul 2 01:44:15 lowtech kernel: Out of memory: Killed process 26378 (postmaster).
Jul 2 03:54:28 lowtech kernel: Out of memory: Killed process 28422 (postmaster).
Jul 2 03:55:08 lowtech kernel: Out of memory: Killed process 28463 (postmaster).
Jul 2 03:58:23 lowtech kernel: Out of memory: Killed process 28464 (postmaster).
Jul 2 04:25:33 lowtech kernel: Out of memory: Killed process 31981 (postmaster).
Jul 2 04:39:42 lowtech kernel: postmaster invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Jul 2 06:31:22 lowtech kernel: Out of memory: Killed process 1345 (postmaster).
Jul 2 06:32:05 lowtech kernel: Out of memory: Killed process 1375 (postmaster).
Jul 2 06:35:22 lowtech kernel: Out of memory: Killed process 1376 (postmaster).
Jul 2 06:39:55 lowtech kernel: postmaster invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Jul 2 06:54:41 lowtech kernel: postmaster invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Jul 2 06:54:41 lowtech kernel: Out of memory: Killed process 5151 (postmaster).
Jul 2 08:19:25 lowtech kernel: postmaster invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Jul 2 08:32:10 lowtech kernel: Out of memory: Killed process 10250 (postmaster).
Jul 3 21:08:14 lowtech kernel: PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
Jul 3 21:08:14 lowtech kernel: FDC 0 is a post-1991 82077
Popular Posts:
- None Found
内部サーバー用のサービスが原因不明な落ち方をして,ログを見たらPostgreSQLであり,調べたら,そちらのサイトに行き当たりました。大変参考になりました。ありがとうございました。
こんな記事でも参考になったのであればうれしい限りです。
たまには役に立つこともあるみたいなので、最近さぼってますがネタがあれば更新していこうとおもいます!