欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记一次接口调用耗时服务端PHP-FPM配置调优

程序员文章站 2023-03-31 16:39:44
最近测试人员不时有反馈,APP首页打开会出现除了基本的页面布局,需要展示数据的地方都是空白。 想着最近首页接口有过调整,新增数据。会不会是接口改动导致的?? 但APP首页接口都是读取redis的,应该不至于出现接口异常的问题啊!! 手上本来有迭代任务进行中,没去看这个问题。 昨天快下班那会手上任务快 ......

 最近测试人员不时有反馈,app首页打开会出现除了基本的页面布局,需要展示数据的地方都是空白。

想着最近首页接口有过调整,新增数据。会不会是接口改动导致的??

但app首页接口都是读取redis的,应该不至于出现接口异常的问题啊!!

手上本来有迭代任务进行中,没去看这个问题。

昨天快下班那会手上任务快做完了。上服务器看看nginx日志,php日志,同时登录阿里云服务器管理控制台查看ecs机器的内存和cpu使用记录,redis使用情况。

发现问题出现得有规律,一般是运营人员在管理后台发布消息推送,随后几分钟就会出现resquest_time耗时比较厉害。平时大部分接口0.01-0.09秒接口请求完成调用返回。但发布消息推送后,接口调用记录显示耗时上升厉害0.1秒->0.5秒->1秒->3秒->7秒,最多的达到15点几秒。

记一次接口调用耗时服务端PHP-FPM配置调优

 

 查看最近的nginx错误日志:
fastcgi sent in stderr: "primary script unknown" while reading response header from upstream, client: ***

记一次接口调用耗时服务端PHP-FPM配置调优

网上搜索相关资料,找到如下:

https://blog.csdn.net/leonnew/article/details/79738593

记一次接口调用耗时服务端PHP-FPM配置调优

凭直觉首要排除1和3,直接去看2的问题,看php错误日志:

记一次接口调用耗时服务端PHP-FPM配置调优

搜索“warning: [pool www] server reached pm.max_children setting (5), consider raising it” 错误原因,找到如下:

https://lirongyao.com/server-reached-pm-max_children-setting.html

看php配置:

记一次接口调用耗时服务端PHP-FPM配置调优

估计是运维搭建生产环境把php-fpm启动后进程数配置太小,和运维沟通后,发个邮件让运维更改php7配置。

中午吃饭时候运维把配置给改了重启,不久后运营人员那边新发一个push消息推送。

再上生产服务器,竟没有错误日志了。。又打开app,同事们没有出现白屏无数据的情况,我手机偶现白屏一次。

php-fpm配置已经改了啊,为啥还是有白屏??

立即上阿里云管理后台查看日志服务,看到push发出后,单是首页的有个接口一分钟内超出280的调用。

这让我想起项目刚上线不久,有对项目使用的laravel框架接口调用次数限制由默认60次一分钟上调到一分钟200过。

记一次接口调用耗时服务端PHP-FPM配置调优

手机偶尔白屏应该就是laravel框架这个限制次数导致的!

再上调laravel次数限制为500上生产,等运营再次发送push消息推送,app已不见白屏的情况。

登录阿里云管理后台查看日志服务,首页接口调用时间基本正常,最长的没超过0.2秒:

记一次接口调用耗时服务端PHP-FPM配置调优

如果不做php-fpm配置的修改,正常情况下,没人攻击服务器恶意捣乱什么的,不会出现什么问题。

公司商务近期在做该app推广,经过我这边已经接入头条app广告,热葫芦,小豆故事,还有接入测试完成即将上线的百度app广告。

用户数正在不断上升。运营人员消息推送发布,同一时间大量的用户打开app,接口调用急剧增加,需要启动php进程数会被迅速拉起,原有的配置已经很难满足需求。