由于redis服务器cpu100%的问题导致网站宕机访问大量出现504gateway time-out

某公司网站因redis服务器CPU100%问题出现大面积502错误,经过排查,发现并非mysql、web服务器或代码问题。通过深入分析,找出阿里云监控界面显示的平均负载误导,实际为redis单核CPU过载。尽管redis内存未超标,但key数量激增至500万+,最终采取清空redis的临时解决方案恢复正常。后续将继续研究根本原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

某天公司突然发现整个网站访问很慢,请求大部分报502,基本处于宕机状态....时间大概持续一整晚,导致公司大量的投诉直接造成经济损失...

网站主要使用的技术栈:

nginx+php+mysql+redis

阿里云ecs

定位问题过程:

第一步就去查看mysql服务器状况,是否有慢查询导致,结果是mysql运行良好

第二步查看web服务器服务器情况,内存使用偏高,但整体负载并没有过红线

第三步查看redis服务器,服务器负载“运行良好”(这里先打个引号后面详细说明)

以上我把它称为排查问题的前置3部曲,检查问题的基本操作。

结果运维工程师告诉我3步完成后竟然一点问题都没有,我当时就有点蒙....

开始检查当天发布的代码是否有可能出现问题,但当时思绪是没有目标的,我们就像无头苍蝇一样扫代码(可想而知没有大概的范围是很难解决的,你得告诉开发工程师大概的方向才能定位问题)...

再次督促运维工程师继续排查...

二次定位问题过程:

检查nginx访问日志,全是60秒超时,查看高峰日志最高约1800/秒左右,这时突然想到我们的php-fpm是静态部署,每台设置260左右的数量(也就是并发最多260个访问左右),我们有6台web 也就是1560(260*6)左右

得出第一结论:我们的web服务器访问数满负荷了,吞吐量很低,也就是访问要排队了

第一结论的疑问1:为什么访问接满负荷web服务器负载没有超红线?

原因:260静态常驻fpm是我们相对服务器内存保守计算得出的值,这个值并没有超载

第一结论的疑问2:为什么吞吐量很低呢,第一想到的是否mysql慢查询问题(工程师最容易犯错的地方),但前面提到我们排查了mysql慢查询并没有,那是什么原因照成的呢?

这时运维同学发现新的问题,细化查询服务器性能发现redis服务器单个cpu100%了,那之前为什么没查出来服务器有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值