Apache-2.2

如果它停止響應並且套接字仍在使用中,如何自動重新啟動apache

  • June 30, 2015

Apache 伺服器 Debian Linux x64 為 mysite.com 中的站點單聲道應用程序和其他使用虛擬主機的站點提供服務。

有時 apache 會因未知原因停止響應。Apache error_log 包含:

[Sat Jun 20 13:56:31 2015] [error] [client 90.190.33.164] File does not exist: /var/www/apple-touch-
icon.png
[Sat Jun 20 16:38:04 2015] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Sat Jun 20 17:20:11 2015] [notice] caught SIGTERM, shutting down
mod-mono-server received a shutdown message
[Tue Jun 23 09:20:50 2015] [error] mod_mono: connect error (Interrupted system call). File: /tmp/mod
_mono_server_default
mod-mono-server received a shutdown message
mod-mono-server received a shutdown message
mod-mono-server received a shutdown message
[Tue Jun 23 09:20:54 2015] [error] Not running mod-mono-server.exe because no MonoApplications, Mono
ApplicationsConfigFile or MonoApplicationConfigDir specified.
[Tue Jun 23 09:20:54 2015] [notice] Apache/2.2.16 (Debian) mod_mono/2.6.3 configured -- resuming normal operations
..

看起來像

[Sat Jun 20 16:38:04 2015] [error] server reached MaxClients setting, consider raising the MaxClients setting

日誌文件中的消息首先出現。

之後可能 cron 作業會嘗試在下面重新啟動 apache,這會導致 error_log 中出現消息:

[Sat Jun 20 17:20:11 2015] [notice] caught SIGTERM, shutting down
mod-mono-server received a shutdown message

此時伺服器已關閉:access_log 未記錄從 6 月 20 日 17:20 開始的任何訪問

伺服器僅在

$$ Tue Jun 23 09:20:50 2015 $$當我手動重新啟動它時。這種情況從上個月開始每月發生幾次。 要解決此問題,請使用以下 crontab 腳本每 10 分鐘執行一次:

wget --timeout=10 --no-verbose --tries=1 -a /var/log/wget.log -O /var/log/wgettulem.html  mysite.com || /etc/init.d/apache2 restart

如果 apache 停止響應,此腳本寫入的日誌文件包含

Connection timed out錯誤資訊。

但是apache沒有重新啟動。嘗試使用手動重新啟動它

/etc/init.d/apache2 restart

返回 Sockect 正在使用錯誤。ps aux 顯示 apace 仍在執行。

我通過使用來解決這個問題

ps aux | grpe apache  

查找應用程序程序號並使用

kill

殺死這個程序。

如何修復或找到此消息的原因?如何自動化這個過程,以便所有 apache 實例都被殺死,並且 apache 將被這個腳本自動重新啟動。有什麼方法可以讓 apache 保持響應?

Debian 版本是 6.0.4

apache2 -V 返回

Server version: Apache/2.2.16 (Debian)
Server built:   Feb  5 2012 21:35:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.4.2, APR-Util 1.3.9
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/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"

apache2.conf 包含

<IfModule mpm_prefork_module>
   StartServers          5
   MinSpareServers       5
   MaxSpareServers      10
   MaxClients          150
   MaxRequestsPerChild   0
</IfModule>

如果您只想在 Apache 掛起(出於任何原因)時強制重新啟動它,那麼您應該安裝 R-fx Networks 的 System Integrity Monitor。

在眾多功能中,它可以配置為監控您的 Web 服務、自動發出重啟命令和發送通知。

快速安裝說明:

cd /usr/local/src
wget http://www.rfxn.com/downloads/sim-current.tar.gz
tar -xvf sim-current.tar.gz
cd sim*
./setup -i

繼續互動式安裝,為您的 Web 服務執行檔定義適當的文件路徑。最後一步,啟用 cronjob:

/usr/local/sbin/sim -j

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