您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

后端踩坑笔记:记一次基于swoole开发的程序丢任务排查修复过程

时间:2022-12-29 11:39:33  来源:51CTO  作者:博读代码

前言

项目是基于swoole开发,框架也是公司内自己开发的框架,并没有用外界热门的swoole框架,swoole是4.0.0版本。项目需要执行大量的自动任务,框架是通过swoole的sendMessage方法将需要执行的任务给到worker执行。然而最近却发现一些自动任务会莫名丢失,并没有执行的情况。

 

排查历程

在发现自动任务丢失的时候,我也是第一时间认为,可能需要执行的任务代码出现BUG,导致执行失败。但是经过排查,任务代码是没毛病的,那究竟是哪里出现了问题,导致任务丢了呢?百思不得其解~

经过不断的溯源,终于查到了swoole的sendMessage方法处。先来看看swoole文档的sendMessage介绍:

 

sendMessage方法是会返回一个布尔值,通过检查发现丢失的任务,都是因为sendMessage失败了,根本就没有触发对应worker的onPipeMessage事件。但是,知道的同时也开始纳闷了,怎么就发送消息失败了呢?返回值只有一个布尔值,去哪里获取报错信息?

swoole还提供了另外一个获取报错信息的方法,那就是getLastError。

 

getLastError能获取最后一次操作的错误码。但是经过调试,发现一个很无奈的问题,getLastError获取不到任何错误码,也不清楚是什么问题导致获取不到,这让我甚是头疼。

后来只能去查一下swoole的日志,看是否能看出点端倪,结果还真有所发现。

 

“output buffer overflow”,意思大概是输出缓存区溢出。再对比getLastError有可能的报错,有两种可能:

 

然后查阅了一下文档关于buffer_output_size:

 

意思是每次发送数据的上限值,出BUG有可能是因为这个问题,立马去添加了项目的buffer_output_size配置,改为128M。但是任务仍旧会出现丢失的情况。

那么就可能是另外一个问题,那就是发送缓存区已满。再次查阅swoole文档,找到了一项配置socket_buffer_size:

 

就是说发送到worker时是先放入缓存区,那么就有可能缓存区满了,塞不进去的情况。死马当活马医,立马修改配置!

经过长时间的观察,任务不再出现丢失的情况。终于解决了这个头疼的问题,Nice!!



Tags:后端   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
网站开发中的前端和后端开发有什么区别
前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有...【详细内容】
2024-02-21  Search: 后端  点击:(33)  评论:(0)  加入收藏
网站程序开发中的前后端分离技术
随着互联网的快速发展和技术的不断创新,传统的网站开发模式已经难以满足日益增长的业务需求。为了提高开发效率、增强系统的可维护性和可扩展性,前后端分离技术逐渐成为了网站...【详细内容】
2024-01-31  Search: 后端  点击:(23)  评论:(0)  加入收藏
一段微信小程序前端与后端连接的代码,带注解
微信小程序的前端和后端连接通常涉及到使用微信小程序提供的网络请求API与后端服务器进行通信。以下是一个简单的示例,展示如何使用微信小程序的前端代码向后端发送请求并处...【详细内容】
2024-01-24  Search: 后端  点击:(56)  评论:(0)  加入收藏
Java后端+Java大数据+前端
web前端开发主要涉及创建网页或网站的用户界面,包括布局、样式、动画、交互等。web前端开发需要掌握HTML、CSS、JavaScript等基础语言,以及各种框架和库,如React、Vue、Bootstr...【详细内容】
2023-12-28  Search: 后端  点击:(104)  评论:(0)  加入收藏
前端请求到后端API的中间件流程解析
在前端请求到后端API的典型流程中,经过一系列中间件的处理,确保请求的顺利处理和安全性。以下是中间件的详细解析:1. 前端请求用户在前端发起请求,包括请求的URL、参数、以及其...【详细内容】
2023-12-06  Search: 后端  点击:(123)  评论:(0)  加入收藏
运动规划之搜索算法:前端规划、后端轨迹生成到状态求解
背景:16-18年做过一阵子无人驾驶,那时候痴迷于移动规划;然而当时可学习的资料非常少,网上的论文也不算太多。基本就是Darpa的几十篇无人越野几次比赛的文章,基本没有成系统的文章...【详细内容】
2023-11-30  Search: 后端  点击:(117)  评论:(0)  加入收藏
Java后端开发需要学什么?这篇干货送给你
在现如今的互联网时代,掌握了编程技术,机遇就会变多,Java作为应用广泛的编程语言,在编程届有着很高的名气,如果你想学习Java,就先要了解Java后端开发需要学习什么!Java后端开发需要...【详细内容】
2023-11-24  Search: 后端  点击:(231)  评论:(0)  加入收藏
2024年不容错过的后端与网页开发新动态
在数字创新不断变化的领域中,作为开发者,你可能会感到自己处于一场永无止境的竞赛之中,面临着挑战和机遇的旋风。开发产品的压力、保持竞争力、跟上用户期望的演变,这些都可能让...【详细内容】
2023-11-24  Search: 后端  点击:(217)  评论:(0)  加入收藏
为什么Go是后端开发的未来
近年来,Go 编程语言的流行度迅速增加。Go 最初由 Google 开发,迅速成为后端开发中最受欢迎的语言之一,特别是在分布式系统和微服务的开发中。本文将讨论为什么 Go 是后端开发的...【详细内容】
2023-11-21  Search: 后端  点击:(206)  评论:(0)  加入收藏
Spring Boot + Vue3 前后端分离 实战wiki知识库系统
下栽の地止:https://www.itwangzi.cn/2508.html Spring Boot + Vue3 前后端分离 实战wiki知识库系统在当今的Web应用开发中,前后端分离已经成为了一种主流的开发模式。Spring...【详细内容】
2023-11-18  Search: 后端  点击:(144)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(2)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(7)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条