2020-09-08

记录一次非专业php项目线上问题排查

 

    事情的经过是这样子的:疫情期间失业后,我由于拖延症一直未加入新公司,刚好朋友有个项目需要人手,我就接手了一部分工作。但开工不到一个月,项目上线后客户反应接口不稳定,有的时候能出数据正常有的时候网页加载不出数据一直报错,希望我们尽快处理。

我是java开发,大前端也都略通一点,所以做得是前端与测试运维工作,但php还真是没有参与过,虽然线上问题由于是晚上发生且实际开发人员由于找的外包不能提供技术支持,但想着我也算干了3年的后端,还是能看看问题的,于是我在收到消息的晚上9点就开始排查了。

 项目后端采用php+redis+nginx+mysql,用户反应项目接口时有数据时而无数据,刚开始觉得重启下服务应该没啥问题,但重启nginx,重启php未能解决问题

折腾了2个小时,终于发现问题并暂时解决了,记录一下。

1 获取当前php-fpm.conf配置文件位置

首先查看日志配置文件,由于有一阵子没看代码,不记得日志配置在哪,只记得文件名,在当前用户任意目录运行命令

locate php-fpm.conf  

得到该文件的位置。

或者通过执行  ps -ef |grep php

可以得到当前的php-fpm进程数以及php-fpm.conf配置文件位置

找到php所在的进程id所保存的位置,可在php-fpm.conf查看

php-fpm 启动:

#  /usr/local/php/为php-fpm的安装地址
/usr/local/php/sbin/php-fpm

php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重启:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid

或者:pkill php-fpm

 

查看是否启动成功:
netstat -lnt | grep 9000
或者使用如下命令,查看是否9000端口被php-fpm占用:
netstat -tunpl | grep 9000

 

通过查看php-fpm.conf 可知 日志存放位置,进入日志文件php-fpm.log 文件 查看看到WARNNING提示

server reached pm.max_children setting (10), consider raising it

意思是php-fpm并发进程满了,修改php-fpm.conf的配置信息。

2 修改php-fpm.conf文件

//最大子进程 (默认是5个)

pm.max_children = 261

//php-fpm启动起始进程数

pm.start_servers = 8

//php-fpm的最小空闲进程数
pm.min_spare_servers = 10

//php-fpm的最大空闲进程数
pm.max_spare_servers = 512

//所有子进程重启时间

pm.max_requests = 500  

后续观察php-fpm日志,未发现类似日志出现,且接口数据返回不卡顿正常显示。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值