NodeJs服务器的Buff缓冲区导致进程阻塞踩坑实录

这边记录一个前两天项目上线时遇到的恶心bug!

我们游戏提供http接口服务的Nodejs服务器在启动后5-10分钟会突然卡死,无法处理任何请求。(具体表现类似于程序代码死循环)

在一个小时的排查之后确认了是我们的其中一个接口,他在返回数据时申请的buff()缓冲区的空间尺寸没有被完全使用导致了整个服务器进程阻塞。
在这里插入图片描述
在特定的参数条件下,iLength会是我们要发回游戏服务器的数据包的实际大小的两倍,后续将整个buff写入tcp连接时,就导致了阻塞。

修复方式

对ilength添加长度判断,使得每次申请的buffer长度都不会太大,并在tcpConn(我自己的变量名)写入buff时check一下是否合法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值