我有一个客户,他有一个电子商务网站,问题是 Apache 每隔 3-7 天就会随机停止一次。然后我们经历了 20 分钟到 2 小时的停机时间,直到我们通过 uptime robot 才知道这一点。这不是网络问题,因为我们尝试了 3 个不同的主机 - Contabo、OVH、Shinjiru。优雅重启失败。我一直在论坛上寻找原因,但到现在为止一无所获。甚至尝试通过查看本教程从 logrotate 中删除行来修复 Apache 每个星期日都会自动停止。为什么?但还是没有运气!
Apache 日志也没有显示任何内容。我们已经重置了 4-5 次,但仍然如此。
我们正在使用带有 SOAP 模块的 php7.0 和一个由 Woocommerce 提供支持的 Wordpress 网站。管理面板是 Webmin,操作系统是 ubuntu 16.04。
客户抱怨很多,因为很多客户已经流失,因为如果谷歌广告发现网站瘫痪,它就会删除该网站,而且需要 3-4 天才能再次获得列表,但随后又出现了 Apache 问题。请帮忙
答案1
有短期和中期的方法来解决此问题。
此外,如果您想从此站点获得有用的帮助,我建议提供更多信息。您的站点配置文件、日志文件以及运行命令时看到的错误消息。例如,剪切并粘贴优雅重启命令的输出文本
短期
解决以前发生过但现在不再发生的问题的最佳方法是通过日志文件。
主 apache2 错误日志文件位于/var/log/apache2/error.log
并且您可能配置了 VirtualHost 特定的错误日志;
# grep ErrorLog /etc/apache2/sites-enabled/*.conf
/etc/apache2/sites-enabled/mysite1.org.conf: ErrorLog /var/log/apache2/mysite1.org-error.log
/etc/apache2/sites-enabled/mysite2.org.conf: ErrorLog /var/log/apache2/mysite2.org-error.log
与服务重启相关的错误将被记录到日志中;
# journalctl -u apache2
-- Logs begin at Sun 2018-07-08 01:35:01 UTC, end at Mon 2018-07-09 21:39:06 UTC. --
Jul 08 06:25:01 devhost1 systemd[1]: Reloading LSB: Apache2 web server.
Jul 08 06:25:01 devhost1 apache2[10537]: * Reloading Apache httpd web server apache2
Jul 08 06:25:02 devhost1 apache2[10537]: *
Jul 08 06:25:02 devhost1 apache2[2313]: DIGEST-MD5 common mech free
Jul 08 06:25:02 devhost1 systemd[1]: Reloaded LSB: Apache2 web server.
要查看特定时间段,请--since
使用--until
# journalctl -u apache2 --since "2018-07-06 10:30:01" --until "2018-07-06 11:30:01"
中期
您的描述表明存在某种资源耗尽问题,这种问题会随着时间的推移而累积。因此,无论是内存、文件描述符,还是潜在的 apache 都无法处理请求,因为缺少 CPU、IO 等,导致请求排队并超时。
因此,通常使用安装在盒子上的某些工具来跟踪这些值很有用。我个人会使用 munin,因为我很熟悉它,虽然它很老旧,但它还是很有用的。
另一个跟踪 CPU、IO 和内存的工具是 sysstat 包,它将记录有用的系统统计信息,您可以将其与停机时间进行比较。