[没事聊聊] xiaomiao版的NexusPHP源码pt程序存在mysql数据库挖矿一样的暴力写入漏洞 看全部

xiaomiao版的NexusPHP源码pt程序存在mysql数据库挖矿一样的暴力写入漏洞

问题
nvme固态硬盘被写爆,io延迟4000ms,同时数据库负载极高,占用CPU非常多,导致服务器系统负载高达50,站点无法打开
使用原版NexusPHP没有问题,问题只发生在xiaomiao版的NexusPHP

原因分析
不但全是innodb,还走的不是内存表。。。首先innodb性能就有严重问题,而且peers一定要放在memory内存表里面
1.png

解决办法
把peers表存储引擎改一下,这个表就应该放在内存表memory,可以随时清空的,内存表性能是最高的,每次重启mysql会清空内存表,客户端重新请求后会录入表
一般来说也更推荐MyISAM而不是innodb,MyISAM性能是InnoDB的十几倍吧,而且peers一定要放在内存表,他代码把peers放在InnoDB我是没想到的,在phpmyadmin里面改
peers都是随时可丢弃的临时数据但是却放InnoDB会导致CPU暴增,还疯狂写io硬盘,nvme延迟干废到几千ms
或者放redis可以,可以走redis读取缓存,但是会发生一次写入,这一次写入是没必要的,但是走redis缓存要看源码php有没有调度,不过至少从刚才的结果来看,肯定没走redis
3.png

修改成内存表后,磁盘基本不再发生写入流量,从原本的150MB/s写入降低到几十KB/s,延迟时间也从红色变回绿色
2.png

还有一种情况,不优化时间的话,请求永远30分钟固定一次,然后每30分钟服务器爆炸一次
所以才需要我那份优化的php,差分错开时间产生的连接数,让CPU永远平滑
停机更新维护后,或者客户端重启,时间就归0了
https://bbs.itzmx.com/thread-106481-1-1.html