服务器故障处理总结(2019-5-5)

记:接口报错的排错以及解决过程
 
前端页面正常渲染,接口出现错误返回,接口采用thinkphp5,前后端分离。
 
非专业运维工程师,这里记录一下此次异常的(紧急)处理过程,供今后进一步学习借鉴。
 
1.首先查看nginx报错日志以及php报错日志,项目代码未改动,大致定位到php-fpm配置出现问题,
 
日记记录报错信息如下:
 
upstream timed out (110: Connection timed out) while reading response header from upstream, client:
106.14.xxxx.xx, server: api.xxx.cn, request: "POST /v1/Relationproduct/index HTTP/1.1", upstream:
"fastcgi://127.0.0.1:9000"
【upstream 超时,也就是说接口响应超时】
 
2.查看内存使用情况:free -m
 
可用内存 100M左右
 
3.查看内存占用情况:
 
ps auxw|head -1;ps auxw|sort -rn -k4|head -4
 
mysql占用:30%-40%
 
php-fpm: 单个线程占用0.3%
 
当前php-fpm 使用进程数:7
 
4.尝试重启php-fpm,查看进程数回复到5,程序恢复正常,跑一段时间后,php-fpm进程数增加
 
到7问题再次出现。
 
 
5.猜测为php-fpm配置可用进程数过少,但考虑可用内存,于是改变最大可用进程数为 10(原5)
 
 
原 php-fpm.conf :
 
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 2
pm.max_spare_servers = 3
request_terminate_timeout = 100
 
第一次修改后:
 
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 8
request_terminate_timeout = 100
 
修改配置后重启,项目稳定一段时间后,php再次出现问题
 
 
由于这个项目接口只部署了一台服务器,当前故障时段为流量高峰,未解决问题,第二次修改后,考虑增加服务器内存,后续再做优化。
pm.max_children = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 30
 
 
重启阿里云实例,并重启nginx以及php,配置生效,项目恢复正常。
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/yokooo/p/12373150.html