解决Virtualizor遭遇CC攻击,造成面板无法访问,连带WHMCS瘫痪问题
近日帮助某知名IDC运维,经常出现WHMCS卡死及无法访问问题。
起初以为是WHMCS所在主机遭遇攻击导致,然而加上防御后依然出现此问题。
经排查发现该问题原因:PHP-CURL单线程读取卡死,导致WHMCS整体瘫痪。
主机商WHMCS脑残设置未做线程优化是一方面,因商家技术拒绝配合调查,只能从CURL目标分析。
发现是内嵌Virtualizor面板调用所致,而Virtualizor面板所在主控服务器:4083端口亦无法访问。
检查该服务器发现多个CPU被MySQL进程100%卡死,导致指令无法运行。
分析MySQL进程:show full processlist
发现其中出现上万个睡眠进程:root localhost virtualizor Sleep 21856 NULL
因此得出该问题结论:
1. 主控遭遇CC攻击,导致超多闲置进程产生并挂起。(睡眠)
2. Virtualizor面板使用长链接,进程睡眠后并没有超时关闭。(已反馈至Virtualizor)
3. MySQL设置中并未限制睡眠进程过期时间,导致长时间无法释放。(修改配置)
MySQL设置修改:/etc/my.cnf
加入:wait_timeout=30
重启MySQL后,睡眠进程数量明显降低。