如何排除刚刚沉默的 Apache httpd 故障?

如何排除刚刚沉默的 Apache httpd 故障?

我们的一台 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 来查看究竟是什么阻碍了进程。

相关内容