【故障】nginx-php的一次故障排查

文章描述了一次技术团队处理线上产品故障的过程,从用户反馈的499错误码开始,通过分析nginx日志、检查session校验、使用strace定位php-cgi问题,最终发现一个阻塞操作导致的问题,该问题在特定环境下未被测试发现。
摘要由CSDN通过智能技术生成

故事的起点

售后小姑娘反馈某用户线上产品突然无法使用,2021年的老项目了,因为用户数较少,所以前端-后端开发都跑路了。啥,为啥我没跑路?脸皮厚啊。言归正传,我们一起梳理下项目,定位问题。

流程图

项目的业务流程图如下:

在这里插入图片描述

问题来了

用户反馈的问题实际上就是红框内容没有返回

问题分析

线上分析

通过nginx常规日志看到错误码499。难道是本地服务还没结束就被杀死了?咨询转发-服务器端开发,确实添加了超时机制。那把超时时间改长一些是不是就可以愉快的终结了呢?嗯,还是先看看慢在哪里吧。

nginx

nginx侧当时是由本人定制的nginx+uploadmodule+简单的session校验。是不是session校验出问题了呢?替换nginx为debug版,并打印debug日志,如下:
在这里插入图片描述
从以上日志可以看到nginx-cgi已输出到php-cgi进程,且整体耗时正常,暂时排除nginx的问题。

php

那一定是php-cgi的问题了吧!怎么定位呢?还好,有strace。将php-fpm工作进程改为1个,strace…

故事的终局

通过strace发现,php脚本中有一个阻塞操作!为什么测试同学没有发现呢?特定环境才会出现!OK,完结撒花。

花絮

nginx

再画下nginx-cgi flow吧
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值