DDOS 攻击后 MySQL CPU 使用率高

DDOS 攻击后 MySQL CPU 使用率高

我的服务器在过去 5 个小时里遭受了严重的攻击,我设法使用 Cloudflare 的防火墙阻止了它们。唯一的问题是 CPU 使用率仍然很高(在 300-500% 之间变化),使用了 33.2gb 的虚拟内存(使用 获取信息htop)。

我怎样才能恢复正常?我需要做什么吗?我尝试重新启动服务器、apache 和 mysql,但仍然很高。

答案1

最可能的解释是,DDoS 导致部分表因 DoS 而大幅增大。检查表大小自最近一次备份以来是否出现意外大幅增长。

可能发生的情况是,您在这些表上运行了编写不当的查询,并执行了全表扫描或类似的低效操作。随着这些表变大,这些编写不当的查询的性能下降。安装 mytop 并查看哪些查询正在运行并占用所有 CPU - 可能只有 1 或 2 个查询重复出现。修复这些问题,或查看它们正在使用哪些表并修剪表中的数据,您应该可以恢复正常运行。

我希望这对您有所帮助并节省您的 upwork 成本。;-)

答案2

也许只需重新启动整个虚拟机..

您可以先检查以下事项:

  • 内存已满,系统已处于交换状态(free -m),您可以尝试删除缓存sysctl -w vm.drop_caches=3,然后尝试降低交换量,甚至swapoff -a,因为一旦系统处于交换状态,磁盘负载就会很高,并且所有延迟都会增加
  • 检查是否有人仍有权访问您的网站(例如漏洞、远程代码、SQL 注入)
  • 你可能仍有许多打开的 tcp 连接,请尝试刀具
  • 如果你的数据库表严重碎片化或者太大,你可以使用mytop
  • 如果 cutter/reboot/restart 没有帮助,请使用 mysql slow logs 调查是否有东西消耗了你的性能

答案3

经过几天的艰苦努力,我发现了问题所在。

DDOS 基本上导致(使用文件驱动程序)创建数十万个会话/storage/framework/sessions,因此当会话垃圾收集器运行时,它会检查每个文件。

我通过将会话的到期时间更改为 1 小时(我将其设置为 24 小时)解决了这个问题。

相关内容