背景:我有一个非常老旧的网站,运行在非常老旧的 VPS、非常老旧的 Apache 和非常老旧的 PHP 上,我无法升级,因为它是一台非常老旧的 CentOS 机器。这是一个最新的 WordPress 网站,在 suExec 设置中每分钟提供大约 100 页。是的,每分钟 100 页。
今天,一个网站瘫痪了大约 15 分钟,从晚上 7:01 开始。错误日志文件中的第一条相关信息如下:
[2014 年 8 月 1 日星期五 19:01:41] [错误] [客户端:abcd] 脚本标头提前结束:index.php、referer:...
日志文件中还有大约两三百条错误消息,截至 7:02。Google Analytics 告诉我,该网站一直以每分钟 1 或 2 个请求的速度响应。7:15,它又开始正常响应,无需我的任何干预。错误日志文件包含有关启动的正常 Apache 通知,如下所示:
2014 年 8 月 1 日星期五 19:16:17] [通知] suEXEC 机制已启用(包装器:/usr/local/apache/bin/suexec)
我不知道是什么原因造成的。可能是服务器或 Apache 或 PHP 内存不足?运行 top 会显示内存不足,所以似乎应该是其他原因:
Mem: 1048576k total, 472756k used, 575820k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
我们需要熬过接下来的两周,然后我们就会迁移到新的主机。到那时,我们会放弃 VPS,但在此之前,我们需要尽可能地提高旧系统的可靠性。
答案1
只需添加一个监视器,向服务器发送动态请求,确定服务器的响应速度是否足够快,如果不够快,则重新启动服务器。考虑到您的服务器要么崩溃,要么进入这种每分钟 1 次的模式,检测不健康的服务器应该相对容易。
您真的不应该运行“非常老旧”的 Apache 或 PHP。它们都存在安全漏洞。如果您不每天更新它们,您就是在自找麻烦,因为黑客只需在您的服务器上运行上周的安全漏洞,然后他们就能控制您的所有服务器以及进入您网络其余部分的入口点。