![CPU 峰值过高导致 Digital Ocean Wordpress 服务器无法访问](https://linux22.com/image/683536/CPU%20%E5%B3%B0%E5%80%BC%E8%BF%87%E9%AB%98%E5%AF%BC%E8%87%B4%20Digital%20Ocean%20Wordpress%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE.png)
我已经设置了一个 digital ocean 服务器来托管一个 wordpress 网站。我将其设置为基本的 10 美元服务器,因为我预计流量不会很大。
设置完成后,我按照 Digital Ocean 安全提示添加了一个用户,并将自己设置为 sudo-er。我还禁用了 root 身份的 SSH 访问。
我在 digital ocean 上使用 wordpress 时遇到了一个非常常见的问题,MySQL 出现内存不足异常。因此我创建了一个 4GB 的交换文件,这似乎是解决办法,从那以后我就再也没有见过这个错误。
几天前,我对网站进行了一些工作,准备发布。我写了 30 篇小博客文章,并添加了一个名为 Yoast for SEO 的插件。我晚上离开了网站,第二天午休时才回来,却发现网站已经关闭了。
在我重启服务器后,网站持续运行了 10 分钟左右,然后又崩溃了。MySQL 似乎占用了大量的 RAM,但我没有收到上次看到的数据库错误。
我甚至将服务器升级到价值 20 美元的版本,并将内存增加了一倍,但没有什么区别。
我还注意到,在安装完 Yoast 并撰写博客后的晚上,CPU 使用率出现了惊人的飙升:从那时起,该网站就一直很不稳定。
虽然该网站无法访问,但我仍然可以通过 Digital Ocean 网站上的网络控制台访问服务器。
该网站上线的时间还不够长,无法备份我在 wordpress 上设置的内容。有什么办法可以解决这个问题吗?
答案1
您没有发布任何错误日志或有关停机时间的其他精确信息,所以我现在只能给出一般性的答案......
任何服务器启动后,都会立即受到攻击。这是网络生活的悲哀事实。您还没有真正的流量,但已经看到峰值。典型的攻击探测迹象。使用 Fail2Ban 等方法阻止这些尝试。阻止他们的 SSH 登录尝试,阻止他们的 Wordpress 登录尝试,并禁止他们的 IP 几天。
接下来,如果您的 Wordpress 网站非常静态(最终用户无需登录),那么您应该考虑缓存。对于静态页面,不需要访问 MySQL。我更喜欢 Wordfence 的 Falcon 缓存和 Nginx,但它也可以在 Apache 上使用。
此外,借助 Monit 等工具,让您的服务器更具自我修复能力。您可以轻松检查 RAM 使用情况,并预防性地重启占用大量 RAM 的程序(如 MySQL 或 Web 服务器)。或者在 MySQL 停机时自动重启它。
但实际上,您应该激活并调查一些日志记录,在您的帖子中添加更多关于您的 webstack 设置(MySQL 版本、引擎、PHP 版本、web 服务器等)的详细信息,并尝试找出真正发生的情况。