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 服务、自动发出重启命令和发送通知。
快速安装说明:
继续交互式安装,为您的 Web 服务可执行文件定义适当的文件路径。最后一步,启用 cronjob: