Httpd

如何對剛剛沉默的 Apache httpd 進行故障排除?

  • March 4, 2011

我的一個 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

附言 | 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/日誌/消息

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 Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU / Linux

阿帕奇 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 基礎和更新,以下例外:來自IUS 社區儲存庫的 php53u。

除了磁碟已滿之外,沒有什麼可去的了。如果它不再發生,那麼它將屬於怪異類別。您是否有dmesg輸出來查看作業系統是否有問題(例如,oom 殺手)。

如果它再次發生,那麼您將必須使用strace以下分叉來查看究竟是什麼阻塞了程序。

引用自:https://serverfault.com/questions/243411