Memo

メモ > サーバ > 各論: トラブル対応例 > サーバが重い・サーバに繋がらない 5

■サーバが重い・サーバに繋がらない 5
Apacheのログに
# tail -n 10 /var/log/httpd/error_log [Tue Jun 21 09:54:56 2016] [notice] child pid 26477 exit signal Segmentation fault (11) [Tue Jun 21 09:54:56 2016] [notice] child pid 26514 exit signal Segmentation fault (11) [Tue Jun 21 09:54:56 2016] [notice] child pid 646 exit signal Segmentation fault (11) [Tue Jun 21 09:55:07 2016] [notice] child pid 647 exit signal Segmentation fault (11) [Tue Jun 21 09:55:07 2016] [notice] child pid 648 exit signal Segmentation fault (11) [Tue Jun 21 09:55:07 2016] [notice] child pid 649 exit signal Segmentation fault (11) [Tue Jun 21 09:55:07 2016] [notice] child pid 650 exit signal Segmentation fault (11) [Tue Jun 21 09:55:07 2016] [notice] child pid 651 exit signal Segmentation fault (11) [Tue Jun 21 09:55:07 2016] [notice] child pid 652 exit signal Segmentation fault (11) [Tue Jun 21 09:56:22 2016] [notice] child pid 654 exit signal Segmentation fault (11)
のように出力されている場合、セグメンテーション違反が発生している セグメンテーション違反は、 ・プログラムの不具合で、大量のメモリを消費した ・C/C++などで作成されたプログラムが、mallocで確保した領域の外など参照してはいけない領域のメモリを参照してしまった ときなどに発生する このとき、psの結果は以下のようになっていた ApacheがCPUをまったく消費していない(動作していない)
# ps aux | grep httpd apache 15313 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15314 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15315 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15316 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15317 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15318 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15319 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15320 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15321 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15322 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15323 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd apache 15324 0.0 0.5 63360 5188 ? S 10:46 0:00 /usr/sbin/httpd root 15393 0.0 0.0 5096 784 pts/0 S+ 10:47 0:00 grep httpd root 30158 0.0 1.1 63360 11660 ? Ss Dec16 0:00 /usr/sbin/httpd
Apacheを再起動するとCPUが消費されるようになり、 「Segmentation fault」もなくなり、Webページにアクセスできるようになった
# service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ] [root@zabbix ~]# ps aux | grep httpd root 15408 1.8 0.9 62840 10184 ? Ss 10:47 0:00 /usr/sbin/httpd apache 15410 3.6 2.2 70728 23264 ? S 10:47 0:00 /usr/sbin/httpd apache 15411 0.0 0.7 63492 7764 ? S 10:47 0:00 /usr/sbin/httpd apache 15412 0.0 0.5 62972 5432 ? S 10:47 0:00 /usr/sbin/httpd apache 15413 0.6 1.2 64664 12996 ? S 10:47 0:00 /usr/sbin/httpd apache 15414 0.0 0.4 62972 4756 ? S 10:47 0:00 /usr/sbin/httpd apache 15415 0.0 0.4 62972 4756 ? S 10:47 0:00 /usr/sbin/httpd apache 15416 0.0 0.4 62972 4756 ? S 10:47 0:00 /usr/sbin/httpd apache 15417 0.0 0.4 62972 4756 ? S 10:47 0:00 /usr/sbin/httpd root 15419 0.0 0.0 5092 772 pts/0 S+ 10:47 0:00 grep httpd
プログラムの不具合なら、yum update で解決するかもしれない もしくは依存ライブラリを差し替えるなど 可能なら試す サーバの再起動で解決することもあるらしい 「再起動によって不正な状態にあったメモリが解消された」 「再起動によって十分なメモリが確保された」 ということかもしれない インフラエンジニアがSegmentation fault をなんとか治してみる http://sarface2012.hatenablog.com/entry/20101027 Cライブラリの問題などで発生することが多いようだが、 PHPで「不正なクラスを参照したために大量のメモリを消費された」場合など、 メモリ不足でも発生することがあるみたい CentOS6 + Apache + PHP で Segmentation fault http://d.hatena.ne.jp/pospome/20140420/1398016279

Advertisement