我是一名网站开发人员,我正在开发的其中一个网站遇到了非常严重的问题,我希望这里有人可以帮助我。
该网站运行在一台专用服务器上,操作系统为 CentOS 6.6,Nginx + Apache 配置,控制面板为 Vesta。我不确定这是否与此相关,但该网站使用 Sphinx 作为搜索引擎。
自 1 月中旬以来,服务器每 6 天就会崩溃一次,每次都是在不同的时间。恢复通常需要大约 1 小时 15 分钟的时间,在此期间任何日志文件中都没有任何条目。
服务器恢复后,MySQL 数据库中最大的 2 个表抛出了重复键错误,因为它们太大而无法快速修复,所以我通常会截断它们,然后从备份中恢复它们。
我检查了所有日志,但找不到任何有关崩溃的提示/相关信息。所有日志都包含崩溃前正常的条目,然后在服务器恢复后恢复。
我检查了所有用户的所有 cron,没有每 6 天运行一次的。
崩溃前的 CPU 和内存使用率非常低:1.6% CPU 和 16.5% 内存,这是服务器上的正常负载。
大约一周的时间里,我怀疑 Vesta 备份 cron 与此有关,因为它始终将内存使用率保持在 74%,即使在运行结束后也是如此,但我禁用了它,除了内存使用率减少外,崩溃仍然存在。
你对我该如何找出罪魁祸首有什么建议吗?我已经想不出什么办法了。
谢谢!
PS:如需我提供其他信息,请告知我!
答案1
尝试收集指标并绘制图表。没有什么比图表更有效。在这些情况下,像 Munin 这样的工具非常有用,可以查看一段时间内的内存、io、进程、cpu、网络、中断等。
此外,如果您的机器是虚拟机并且具有不可用的网络文件系统,这也许可以解释日志时间的差距(为了获得额外的分数,请尝试远程日志记录)。