PHP WebSocket 报错,WebSocket 服务挂掉问题记录

本文记录了一次PHP WebSocket服务挂掉的问题排查与解决过程。通过对nginx日志、swoole日志的分析,发现由于ulimit -n设置过低导致错误,调整该值并优化系统参数解决了连接失败问题。此外,还处理了Redis偶尔链接失败和订阅后无法接收信息的问题。
摘要由CSDN通过智能技术生成

一、背景

之前使用websocket服务为H5页面进行实时数据推送,突然有一天产品给我反馈,说该页面的实时刷新功能失效了,于是开始进行排查和处理,并将过程记录下来。

这个服务是有监控程序的,每分钟检查一次websocket是否正常,不正常的话会将进程全部杀掉进行重启。

当天接到反馈后,我看了下服务,监控程序是正常的,会对websocket进行重启,但每次重启过后不超过30s,websocket的master节点就又挂了。

情况就是这样的,下面进入排查流程。

二、master节点为什么会挂掉?

在官网上有列举以下三种情况会导致无法提供服务:

(1)系统负载过大swoole无法申请到内存而挂掉

(2)swoole底层发生段错误

(3)Server占用内存过大被内核Kill,或者被某些程序误杀

但是根据当前环境,并不符合上述情况,所以这个问题暂时还没有找到具体的原因。

三、根据日志报错解决

(1)首先看了下nginx的error.log,发现大量报错:

13247#0: *176909901 connect() failed (111: Connection refused) while connecting to upstream,

看了下nginx配置,可以看出一开始的配置是很小的,所以对几个配置进行增大

worker_processes 1; //worker角色的进程个数

worker_rlimit_nofile 1024;// 更改worker进程的最大打开文件数限制。

worker_connections 1024;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值