记一次swoole连接数太多导致的错误

这篇具有很好参考价值的文章主要介绍了记一次swoole连接数太多导致的错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原先就有点担心这个项目正式上线会出现各种问题,所以刚上线就赶紧查看日志

果然,频繁出现错误:

WARNING Server::accept_connection(): accept() failed, Error: Too many open files[24]

这个错误通常是由于操作系统限制了进程能够打开的文件句柄数量,导致当前进程无法打开更多的文件,从而无法处理新的连接请求。

解决该问题的方法是增加系统限制的文件句柄数量,可以通过以下几个步骤实现:

  1. 执行命令 ulimit -n 查看当前系统限制的文件句柄数量;

  2. 编辑文件 /etc/security/limits.conf,添加以下两行内容:
     

    *               soft    nofile          65535
    *               hard    nofile          65535
    

    这两行配置表示对所有用户增加软限制和硬限制的文件句柄数量都为 65535,也可以根据实际情况进行修改;

  3. 保存文件并执行命令 ulimit -n 65535 使设置立即生效;

  4. 重启系统,让修改的文件句柄数量限制生效

         

操作完以后发现还是不行,查看了下tcp的连接数量:

netstat -ant |grep ESTABLISHED |wc -l 

netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'

发现连接数量超过1024的时候就会报上面那个错误,因此想到应该是tcp最大连接数量被限制为1024,修改tcp连接数需要以下几个步骤:

  1. 编辑文件 /etc/sysctl.conf

net.ipv4.conf.all.accept_redirects=0
net.ipv4.icmp_echo_ignore_all=1
vm.overcommit_memory = 0
net.core.somaxconn = 5120
fs.inotify.max_user_instances = 10240
fs.inotify.max_user_watches = 81920000
net.ipv4.tcp_max_tw_buckets = 524288
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3

   2 . 执行命令:     

sysctl -p 

#如果想要直接修改某个参数的代码

sysctl -w fs.inotify.max_user_instances=51200

本来以为已经解决了,到了晚上重启了下又出现了同样的问题,重复查看已确认(ESTABLISHED)的TCP连接,到了1080左右就报错,后来想到是不是方向错了,应该也查看下等待(TIME_WAIT)的TCP连接数,发现等待的连接数超过了设置的数量,看来还是要详细了解sysctl各参数的意义。


重启以后还是出现这个报错,结果还是看脸解决,继续记录下本次解决的流程:

killall php -9;
sysctl -w fs.inotify.max_user_instances=51200;
sysctl -p

执行完上面的还是没有解决,又重启了TCP服务报错了,关掉改成先启动WS服务,这时候可以了。这里面是不是有些什么关联,暂时不敢重启了,下次重启再看看是不是这个原因 

目前问题已经解决,上面的sysctl就是最新的配置信息。

最后总结的问题就是物联网那边的模块60秒就会发起一个tcp连接,之前的又没有断开,所以导致tcp连接一直在累计,所以就需要设置sysctl各方面的参数了

后面又出现了这个报错,还是按照上次解决的办法来处理,应该是因为总共连接数超过上面配置的10240,改成51200就能解决。

运行了一段时间以后主要数据是没什么问题了,但是经常出现 Cannot assign requested address 的报错,导致有时候ws连接了以后,没有接收到返回的消息,发现是TIME_WAIT的连接数太多了,那解决办法就是减少端口被占用的清空,快速清理TIME_WAIT占用的端口,修改配置如下:

net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_recycle=1

观察了几天,之前总是报错的情况目前算是得到了解决。       

        文章来源地址https://www.toymoban.com/news/detail-432834.html

到了这里,关于记一次swoole连接数太多导致的错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 记一次 .NET某工控 宇宙射线 导致程序崩溃分析

    记一次 .NET某工控 宇宙射线 导致程序崩溃分析

    为什么要提 宇宙射线 , 太阳耀斑 导致的程序崩溃呢?主要是昨天在知乎上看了这篇文章:莫非我遇到了传说中的bug? ,由于 rip 中的0x41变成了0x61出现了bit位翻转导致程序崩溃,截图如下: 下面的评论大多是说由于 宇宙射线 ,这个太玄乎了,说实话看到这个 传说bug 的提法

    2024年02月04日
    浏览(8)
  • 记一次 Mockito.mockStatic 泄漏导致的单元测试偶发报错排查过程

    记一次 Mockito.mockStatic 泄漏导致的单元测试偶发报错排查过程

    相信用 Java 写过单元测试的读者们对 Mockito 不会陌生。至于 Mockito 是什么,为什么要用 Mockito,本文不再赘述。本文记录了一次在 Apache ShardingSphere 项目中,由 Mockito.mockStatic 使用不当导致的单元测试偶发报错排查过程。 Mockito 自 3.4.0 起新增了一个方法 Mockito.mockStatic ,支持对

    2024年02月10日
    浏览(10)
  • 记一次BootCDN被黑产挂马导致站点跳转博彩网站的问题

    记一次BootCDN被黑产挂马导致站点跳转博彩网站的问题

      近期发现公司某些站点出现偶尔跳转博彩网站的现象,经过排查发现该现象为供应链投毒攻击,BootCDN上的静态资源无一例外均被污染, 当外站引入BootCDN的静态资源时,如果请求携带的Referer头为指定值(涉及公司隐私不便透露),User-Agent头为手机浏览器UA,触发恶意代码注

    2024年02月08日
    浏览(7)
  • 记一次dlopen使用问题导致Framework重启,tombstones、pmap与反汇编分析(上)

    记一次dlopen使用问题导致Framework重启,tombstones、pmap与反汇编分析(上)

    :Android Framework 动态库 动态链接 Binder Android Studio一次更新后发现install App,设备就重启了,跑了一遍开机动画但不是从开机第一屏开始重启,tombstones内容查看发现是 surfaceflinger 挂在 libbinder.so ,那install app做了什么这个不得而知,理论上有问题应该挂的是PackageManager

    2024年04月08日
    浏览(10)
  • 记一次Git未Commit直接Pull导致本地代码丢失后的挽救过程

    记一次Git未Commit直接Pull导致本地代码丢失后的挽救过程

    第一次遇到这种问题,有点紧张... 好吧,废话不多说,IDEA或者AndroidStudio进入Git Uncommiteed Changes - Unstash Changes: 在弹出的Unstash Changes对话框点View查看代码,如果代码是本地丢失的代码,那么恭喜你,又可以继续愉快的玩耍了。 不过千万要注意不用随便点到Drop,Clear按钮。 这

    2024年02月06日
    浏览(41)
  • 记一次浏览器下载错误处理-失败网络错误

    记一次浏览器下载错误处理-失败网络错误

    背景 最近在自己电脑上Chrome浏览器正常使用,但只要是下载软件,就会在下载几十秒后,自动停止,报 失败-网络错误 ,导致文件都下载不成功,如下图。 猜测是更改了哪块的配置,导致一直中断,可以依次检查以下几种方案。 1)检查下载文件目录是否存在 2)检查网络是

    2023年04月16日
    浏览(11)
  • 记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

    记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

           基于公司的业务需求,在SpringCloud Gateway组件的基础上,写了一个转发服务,测试开发阶段运行正常,并实现初步使用。但三个月后,PostMan请求接口,返回异常,经排查,从日志中获取到转发响应的结果为乱码:        跟踪日志: 转发到目标接口,响应结果已乱码

    2024年02月04日
    浏览(8)
  • 记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

    记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

    我随便写写,你们随便看看 环境背景:在docker中部署mysql镜像,通过portainer管理docker容器 简单说下过程:docker里mysql的时区没有设置,导致相差8小时,通过增加TZ=Asiz/Shanghai环境变量,然后重启容器来生效。结果重启的时候始终无法启动起来,后来发现是自动升级了mysql镜像版

    2024年02月07日
    浏览(10)
  • 记一次SPI机制导致的BUG定位【不支持:http://javax.xml.XMLConstants/property/accessExternalDTD】

    记一次SPI机制导致的BUG定位【不支持:http://javax.xml.XMLConstants/property/accessExternalDTD】

    今天在生产环境启用了某个功能,结果发现有个文件上传华为云OBS失败了,报错如下: 首先看抛异常的第一条信息,org.apache.xalan.processor.TransformerFactoryImpl,这个类首先看名称,后面带了Impl,一般来说应该是某个接口的实现类,因为这个是引用的jar包里报的错,还是apache的

    2024年01月25日
    浏览(9)
  • Unity - 记一次非正规变体优化带来的兼容性导致部分手机卡死的问题

    Unity - 记一次非正规变体优化带来的兼容性导致部分手机卡死的问题

    在 2023.4.6 我们的 角色展示界面 就遇到了 华为手机,red mi note 11 的测试手机上的 后 2023.5.24 再次遇到类似的问题,但是这次重现的地方很多,不单止 角色展示界面 遇到 排除过: 模型 特效 场景 人物 材质 后来多次排查,发现是 PBR 所有的 变体拆分优化 的文件导致阴影部分

    2024年02月08日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包