これが単純なものであることを願っていますが、そうではないかもしれません。
ロード バランサーの背後にセットアップされた4 つのRHEL5 Web ボックスがあります。すべてがNFS
共有からコンテンツの大部分を提供します。
ときどき (1 日に 2 回以下)、カーネルからの syslog に apache からのセグメンテーション違反に関するメモが表示されます。
/var/log/messages.2:Sep 13 14:09:14 20050lpweb01 kernel: httpd[10006]: segfault at 00007fffae2eede8 rip 00002ab21a4045d4 rsp 00007fffae2eedd0 error 6
場合によっては、これに関する apache エラー ログへのメッセージも付随しますが、常にではありません。
# grep -ic seg /var/log/messages* |egrep -v '0$'
/var/log/messages.2:1
/var/log/messages.3:2
/var/log/messages.4:4
# zgrep -ic seg /var/log/httpd/error_log* |egrep -v '0$'
/var/log/httpd/error_log:1
/var/log/httpd/error_log.10.gz:1
/var/log/httpd/error_log.17.gz:1
/var/log/httpd/error_log.19.gz:1
/var/log/httpd/error_log.23.gz:1
/var/log/httpd/error_log.24.gz:2
/var/log/httpd/error_log.25.gz:1
/var/log/httpd/error_log.28.gz:2
/var/log/httpd/error_log.30.gz:1
/var/log/httpd/error_log.31.gz:1
/var/log/httpd/error_log.35.gz:1
/var/log/httpd/error_log.39.gz:4
/var/log/httpd/error_log.42.gz:1
/var/log/httpd/error_log.44.gz:3
/var/log/httpd/error_log.46.gz:1
ウェブ全体の指示に従ってコアダンピングをセットアップしました:
echo "ulimit -c unlimited >/dev/null 2>&1" >> /etc/profile
echo "DAEMON_COREFILE_LIMIT='unlimited'" >> /etc/sysconfig/init
echo 1 > /proc/sys/fs/suid_dumpable
echo "core.%p" > /proc/sys/kernel/core_pattern
echo "CoreDumpDirectory /home/coredump" > /etc/httpd/conf.d/core_dumps.conf
mkdir /home/coredump
chown apache: /home/coredump
source /etc/profile
service httpd stop
service httpd start
segfault (kill -11) を「誘導」すると、コアダンプが生成されます。
/var/log/httpd/error_log:[Sat Sep 15 20:43:32 2012] [notice] child pid 20746 exit signal Segmentation fault (11), possible coredump in /home/coredumps
ただし、segfault が単独で発生した場合、コアダンプは作成されません。
/var/log/httpd/error_log:[Sat Sep 15 12:03:44 2012] [notice] child pid 10652 exit signal Segmentation fault (11)
これはなぜですか? また、毎回コア ダンプが発生するようにするにはどうすればよいですか?
PHP 5.2を実行していますが、それ以外はすべて標準のRHELまたはEPELリポジトリからインストールされます。