Provisional headers are shown,记一次php排错流程

原创 zhaoliang  2018-05-17 23:18  阅读 740 views 次

最近公司的QA突然要变换我负责几个项目的测试服务器,QA的同事新搭建了PHP环境,反馈遇到了好些问题,寻求帮助,而我们近期根本没提测过什么需求……

简单看了一下,基本上涉及到Ajax接口请求的功能都有问题,最直接的就是用户无法注册登录,查看了各处配置均正常,唯独ajax接口异常,无法给出正常响应,查看控制台发现总是出现Provisional headers are shown。

花了大半天的功夫,终于解决了问题,因为无法确知QA同事是如何启动PHP服务的,只能将自己的分析排错过程整理一下,期望能帮到后来人。

分析排错过程如下:

1.重点针对一个接口进行调度,将post方式的ajax请求拿出,改做url直接访问请求,增加断点,发现响应正常,只是响应时间较长,初步怀疑新测试机与上游Api接口请求存在严重的网络延迟(接口数据与上游Java接口有交互)

2.寻求op同事帮忙查询公司内网DNS解析,发现确实将内网域名通过公网dns映射了,ping的时候响应时间较长,之后op的同事做了调整,ping可以很快响应,以为问题解决了,结果依旧,有点泄气,问题依然没能定位,继续排查……

3.突然想起ajax异步超时的设定,发现前端的ajax接口,前端的同事统一设定了5s的超时时间,将超时时间改为10s,问题依旧,改为15s,在一个漫长的等待过程之后,好像可以正常工作了,然,15s,呵呵,问题还是需要排查PHP request

4.现在知道这个响应时间很不正常,基本确定是当前服务器自身问题,哪的问题依旧不知,继续苦逼调试

5.各种调试后发现,PHP解析的url请求响应都比较慢,而静态的html响应非常快……

6.开始对比cgi接口解析的php页面请求和cli命令解析的php脚本的时间差异,发现问题,完全相同的内容,网页响应极慢,似乎感知到是php-fpm的问题了,查看配置也都正常

7.kill掉原php-fpm进程,尝试按照自己配置php环境的方式重启php-fpm服务,问题解决,发现是php-fpm启动方式导致,如果早一点先重启php服务试试,也许很快就解决问题了,然并卵

总结

1.类似事情遇到过多次,最后发现总是一件较小的问题或bug却浪费大量时间排查

2.如果能事先重启服务,也许对自己的启示还会多一些,结果浪费了将近一天,还感觉没啥收获

3.也许这样的事情经历多了,就变成了经验,于自己于别人

本文地址:http://blog.58cm.cn:8088/archives/508.html
版权声明:本文为原创文章,版权归 zhaoliang 所有,欢迎分享本文,转载请保留出处!

评论已关闭!