突然システムが動かなくなった。
現時点で解決してませんが作業ログを残します。
--- 2014/05/06 追記 ---
解決しました。
CakePHPの $this->loadModel() で
モデルでもないクラスを指定していました。
これにより大量のメモリが消費されてエラーになっていたみたいです。
Apache とか PHP とか関係なかった・・・。
----------------------
Apacheのエラーログを見ると ....
child pid 3669 exit signal Segmentation fault (11)
なんだこのエラーは・・・。
Segmentation fault はLinuxのメモリアクセスが問題で発生するエラーらしい。
ここらへんの説明は省略。
OS再起動、Apache再起動でも直らない・・・。
解決方法をググるとcoreファイルを出力する必要があるらしい。
coreファイルとはLinuxが異常終了したときに出力されるエラーログみたいなファイルのこと・・・らしい。
出力方法は以下になる。
以下のように core file size を確認する。
[root@localhost ~]# ulimit -a core file size (blocks, -c) 0 ... 省略 ...
サイズが0なので変更する。
# vim /etc/security/limits.conf
以下を追記
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
root soft core 65536
apache soft core 65536
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
Apacheのconfファイルにcoreファイルの出力先を設定する。
# vim /etc/httpd/conf/httpd.conf
以下を追記。
別に出力先はどこでもいい。
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
CoreDumpDirectory /var/www/html/DirForVm/GachaSample/app/tmp/logs
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
ここでOSを再起動しておく。
# reboot
再起動が完了したら、
再度 Segmentation fault のエラーを発生させてみる。
先ほど設定した出力先に、core.5324 のようなファイルができる。
はずだが、なんかできなかった・・・。
でも出力されているはずなので、find してみたら見つかった。
このcoreファイルをgdbコマンドで確認してみる。
gdbコマンドはC, C++のデバッガーらしい。
以下のように apacheの実行コマンド と ファイルを指定する。
# gdb /usr/sbin/httpd -c ./core.3523
すると、ファイルの中身が表示されていく。
表示が止まるとgdb用のコマンドラインになるので、
whereと打ってエラー箇所を表示させる。
(gdb) where
で、表示されたのが以下の内容。
#0 0xb7569e9d in ?? () from /etc/httpd/modules/libphp5.so #1 0xb756a489 in _safe_emalloc () from /etc/httpd/modules/libphp5.so #2 0xb7599f0c in ?? () from /etc/httpd/modules/libphp5.so #3 0xb759b261 in zend_parse_parameters () from /etc/httpd/modules/libphp5.so #4 0xb74b701e in ?? () from /etc/httpd/modules/libphp5.so #5 0xb76119e4 in ?? () from /etc/httpd/modules/libphp5.so #6 0xb75fe3e6 in execute () from /etc/httpd/modules/libphp5.so #7 0xb75847b6 in zend_call_function () from /etc/httpd/modules/libphp5.so #8 0xb746283b in ?? () from /etc/httpd/modules/libphp5.so #9 0xb76119e4 in ?? () from /etc/httpd/modules/libphp5.so #10 0xb75fe3e6 in execute () from /etc/httpd/modules/libphp5.so #11 0xb75847b6 in zend_call_function () from /etc/httpd/modules/libphp5.so #12 0xb746283b in ?? () from /etc/httpd/modules/libphp5.so #13 0xb76119e4 in ?? () from /etc/httpd/modules/libphp5.so #14 0xb75fe3e6 in execute () from /etc/httpd/modules/libphp5.so #15 0xb75847b6 in zend_call_function () from /etc/httpd/modules/libphp5.so ... 省略 ...
何か libphp5.so が悪いみたい・・・。
ググるとPHPのバグみたい。
でも詳しくは分からん・・・。
とりあえず、Apache + PHP を再インストールしてみるけどダメ。
なんなんだこれ・・・。
開発環境を再構築した方が早いのでは・・・。