网站首页 > 技术教程 正文
公司一个需求版本开发、测试结束,升级到灰度环境之后频繁出现502
公司使用的是php + nginx 所以分析也是按照这个方向来分析的。
nginx报错:
NGINX ERROR 10.9.95.75 !!!
2020/07/21 17:05:12 [error] 7#7: *38808 recv() failed (104: Connection reset by peer) while reading response header from upstream
这里的意思是,nginx已经和php-cgi(就是php-fpm进程)连接成功,并且发送了消息, 但是php-cgi进程由于某些原因关闭了,发送了一个reset包通知nginx进程。
状态码解释
- 504 nginx超过了自己设置的超时时间,不等php-fpm返回结果,就结束了
- 502 是php-cgi执行了, 但是没有读取到数据就超时了。php-fpm超时 php-fpm主进程会认为这个 php-fpm进程有问题会重启。
如果是程序性能问题导致的,php-fpm进程将会不停的kill && fork,此操作很消耗系统资源, 而且会给nginx进程带来影响,所以nginx会频繁的给客户端返回 502, 再之后, 如果nginx的连接数被占满了,客户端将会收到 504错误码。
Connection reset by peer
表示当前服务器接收到了服务器对端发送过来的TCP RST信号。也就是对端已经关闭了连接, 接收方需要关闭连接,然后根据自己的逻辑处理。
让我们来理解下RST信号:
上图中画“红线”的位置是TCP的标识位,每个标志位占用一个bit。以下是6个标志位的解释:
- UGR: URG为1时,表明该包中有需要紧急处理的数据
- ACK: 确认应答是否有效,为1为有效
- PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走;PSH为1时就是将缓冲区中的数据交给上层协议。PSH为0时,就是数据不需要立即传先进行缓存
- RST: RST为1,表示连接出现异常必须重更新连接,会将连接断开重新连接
- SYN: 用于建立连接,为1表示希望重新建立连接
- FIN: FIN为1时,表明之后不再会有数据发送了要断开连接,本端要关闭了,FIN标识为结束报文段
- 这里的RST就是上面 nginx抛出错误 Connection reset by peer 的解释
查看php-fpm的慢日志:
[21-Jul-2020 17:12:10] [pool www] pid 975
script_filename = /data/xmq_api_alpha//api/v1.10/index.php
[0x00007f99db6219b0] pconnect() /data/xmq_api_alpha/common/Redis/RedisManager.php:83
[0x00007f99db621910] _createRedis() /data/xmq_api_alpha/common/Utils.php:952
[0x00007f99db6218a0] call_user_func() /data/xmq_api_alpha/common/Utils.php:952
[0x00007f99db6217e0] retry() /data/xmq_api_alpha/common/Redis/RedisManager.php:98
[0x00007f99db621770] createRedis() /data/xmq_api_alpha/common/Redis/RedisManager.php:122
[0x00007f99db6216e0] tokensRedis() /data/xmq_api_alpha/api/v1.10/app/plugins/SecurityPlugin.php:816
[0x00007f99db621570] auth() /data/xmq_api_alpha/api/v1.10/app/plugins/SecurityPlugin.php:670
[0x00007f99db621380] beforeExecuteRoute() /data/xmq_api_alpha/api/v1.10/index.php:270
[0x00007f99db621310] fireQueue() /data/xmq_api_alpha/api/v1.10/index.php:270
[0x00007f99db6212a0] fire() /data/xmq_api_alpha/api/v1.10/index.php:270
[0x00007f99db621250] dispatch() /data/xmq_api_alpha/api/v1.10/index.php:270
[0x00007f99db621200] handle() /data/xmq_api_alpha/api/v1.10/index.php:270
php-fpm慢日志查看表明,某个 pod 连接到 Redis 超时导致问题。
这是 K8S集群内部网络通信的问题,尝试重启pod,重启之后问题得到解决。
猜你喜欢
- 2024-10-15 504 Gateway Time-out(504 gateway time-out解决流程手机)
- 2024-10-15 网站报错504怎么办?(网站报503错误)
- 2024-10-15 业务前端界面报错504排查思路和解决办法
- 2024-10-15 前端报504错误如何定位(前端403报错)
- 2024-10-06 蓝易云 - Linux系统Nginx优化与防盗链详细教程
- 2024-10-06 提示“504连接源站超时”是怎么回事
- 2024-10-06 错误代码解析500、501、502、503、504
- 2024-10-06 少年郎,我这里有一份nginx配置,你拿走吧
- 2024-10-06 网络抓包定位504 gateway timeout问题
你 发表评论:
欢迎- 08-06linux 和 windows文件格式互相转换
- 08-06谷歌 ChromeOS 已支持 7z、iso、tar 文件格式
- 08-06Linux下比较文件内容的6种方法
- 08-06文件格式及功能汇总
- 08-0610个Linux文件内容查看命令的实用示例
- 08-06Linux-如何区分不同文件类型
- 08-06Zabbix技术分享——监控windows进程资源使用情况
- 08-06Linux系统卡顿?学会ps命令这三招,轻松定位问题进程
- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)