服务端故障排查经验记录1——16核32G服务器满载问题"/>
服务端故障排查经验记录1——16核32G服务器满载问题
-
2021年5月节假日, 某公司的16核32G服务器,CPU满载导致大量用户瘫痪2小时以上,这张图片是当时的服务器情况。
经过现场分析数据库与服务端代码,做出以下分析及判断:
1、服务端采用PHP开发,thinkphp3.2框架,没有redis或其他工具处理并发;
2、服务端并发量为3000至5000,却把数据库资源占用100%、服务器资源占用100%,数据库用的还是4核的阿里云数据库;
3、观察PHP代码,发现大量SQL查询没有使用索引查询,观察云数据库日志发现大量慢SQL,甚至出现一条SQL查询20分钟现象,且表数据量不到10万条记录;
4、观察数据库表结构,发现大量表缺乏索引,没有遵守数据库设计三大范式,表内冗余严重。
最终确认,最大问题是查询时没有使用索引列作为查询条件,导致大量慢SQL堆积,且没有并发处理机制,导致服务器瘫痪。
处理办法是找到所有慢SQL,为查询、修改用到的关键字段加索引。最终有效解决问题。下图是忙时4核8G服务器运行状况:
更多推荐
服务端故障排查经验记录1——16核32G服务器满载问题
发布评论