![如果 Apache 停止响应并且套接字仍在使用中,如何自动重新启动它](https://linux22.com/image/660955/%E5%A6%82%E6%9E%9C%20Apache%20%E5%81%9C%E6%AD%A2%E5%93%8D%E5%BA%94%E5%B9%B6%E4%B8%94%E5%A5%97%E6%8E%A5%E5%AD%97%E4%BB%8D%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E5%AE%83.png)
Apache 服务器 Debian Linux x64 为 mysite.com 和其他使用虚拟主机的网站中的 mono 应用程序提供服务。
有时 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 开始不记录任何访问
服务器仅在 [2015 年 6 月 23 日星期二 09:20:50] 手动重新启动时才开始重启。从上个月开始,这种情况每个月都会发生几次。
为了修复此问题,每 10 分钟运行一次以下 crontab 脚本:
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
查找 appache 进程号并使用
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>
答案1
如果您只是想在 Apache 挂起(无论出于何种原因)时强制重新启动它,那么您应该安装 R-fx Networks 的系统完整性监视器。
在众多特征,它可以配置为监视您的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