我们的一台 Apache httpd 服务器一夜之间莫名其妙地“死机”了。我查看了所有相关日志,没有发现任何异常。
值得庆幸的是,这发生在我们的开发环境中,但我很担心,因为我们的开发环境几乎与我们的生产环境完全一样。
谁能告诉我这里发生了什么事?
症状和故障排除步骤
- Apache httpd 完全没有响应
- 总体负载平均值为 0.0
- 无日志异常
ps aux | grep httpd
看似正常iptables -L
显示端口 80 开放- SELinux 已启用并正确配置:未记录 AVC
- 未对任何系统组件进行任何配置更改,无论更改多么微不足道
- Apache httpd 是重新加载在
17:11:25
服务器时间清除 APC(php)缓存- 重新加载后,请求成功,
17:20
之后我就离开了 - 重新加载后没有发生任何异常
- 重新加载后,请求成功,
- 第二天早上,httpd 进程没有响应
- Telnet 到 80 端口连接成功
- 手动 GET、POST、OPTIONS 和 HEAD 请求未收到任何响应;未记录任何内容
日志
访问日志
172.22.44.41 - - [03/Mar/2011:17:20:18 -0600] "GET /admin.php?type=notifications HTTP/1.0" 200 44326 "http://umc.dev.example.com/admin.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13"
172.22.44.41 - - [04/Mar/2011:14:45:16 -0600] "GET / HTTP/1.0" 200 62921 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13"
错误日志
[Thu Mar 03 17:11:25 2011] [notice] SIGHUP received. Attempting to restart
[Thu Mar 03 17:11:25 2011] [notice] Digest: generating secret for digest authentication ...
[Thu Mar 03 17:11:25 2011] [notice] Digest: done
[Thu Mar 03 17:11:25 2011] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Fri Mar 04 14:45:05 2011] [notice] caught SIGTERM, shutting down
[Fri Mar 04 14:45:05 2011] [notice] SELinux policy enabled; httpd running as context user_u:system_r:httpd_t:s0
[Fri Mar 04 14:45:05 2011] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Mar 04 14:45:05 2011] [notice] Digest: generating secret for digest authentication ...
[Fri Mar 04 14:45:05 2011] [notice] Digest: done
[Fri Mar 04 14:45:05 2011] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
ps 辅助 | grep httpd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 8477 0.0 1.9 408748 9876 ? Ss Feb24 0:03 /usr/sbin/httpd
apache 19933 0.4 14.6 436436 74692 ? S Mar03 0:01 /usr/sbin/httpd
apache 19936 0.4 8.4 419708 43148 ? S Mar03 0:01 /usr/sbin/httpd
/var/log/消息
Feb 27 04:02:01 webdev1 syslogd 1.4.1: restart.
Mar 4 14:43:35 webdev1 yum: Installed: strace-4.5.18-5.el5_5.5.x86_64
版本
操作系统和内核
- CentOS 版本 5.5(最终版)
- Linux webdev1.int.example.com 2.6.18-194.32.1.el5 #1 SMP 2011 年 1 月 5 日星期三 17:52:25 EST x86_64 x86_64 x86_64 GNU/Linux
Apache httpd
Server version: Apache/2.2.3
Server built: Aug 30 2010 12:28:40
Server's Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
PHP
- php53u-5.3.5-3.ius.el5
使用的存储库
CentOS Base 和更新的所有软件包,但以下软件包除外:php53u 来自IUS 社区存储库。
答案1
除了磁盘已满之外,没有什么可做的。如果不再发生,那么它将落在怪异类别。您是否有dmesg
输出来查看操作系统是否有问题(例如,oom killer)。
如果再次发生,那么您将必须使用strace
以下 fork 来查看究竟是什么阻碍了进程。