我们的 Digital Ocean droplet 的 CPU 负载平均每 1-1.5 小时就会出现一次峰值。以下是过去 24 小时的性能图表:
这里是一些 1.5 小时(一个周期)的 MySQL 错误日志以及 1.5 小时(一个周期)的 syslog。
有些人评论说:
我们的 mysql 实例经常被 Linux 的 OOM(内存不足)终止程序终止。您应该检查服务器上运行的资源所消耗的负载。根据经验,这通常是由于贪婪查询导致资源争用,并使 Linux 牺牲了最昂贵的进程。
然而,如果你看看系统日志,这是因为有一堆阿帕奇正在运行的子进程导致 mysql 崩溃。这些 apache 子进程杀死了该进程!它们每 1-1.5 小时运行一次!我们没有任何 cron 作业。
另外,如果你看一下性能图,即使 CPU 平均负载(1 分钟)达到峰值 20.71,CPU 也只达到 46.47%,内存达到 53%。最高 CPU 和内存从未分别超过 57.5% 和 88%。
我在 Google 上找到了很多相关主题,但在我看来,它们似乎没有任何意义,包括使用交换、限制 apache 子进程等。例如,限制 apache 子进程只是救火。我们必须找出问题的关键,也就是为什么一开始就有这么多 apache 子进程在运行,而这些问题大约在 10 天前才出现。
另外,这里是htop日志当网站暂时瘫痪时。两个核心都瞬间飙升至 100%,但 CPU 保持在 50% 以下。
任何想法都将不胜感激!!
多谢!
BR,汤姆