从线上偶发的宕机事件看Netty流量控制

本文介绍了在线上推送系统中遇到的Netty长连接集群偶发宕机问题,分析了可能的原因,包括内存泄露、ChannelOutboundBuffer数据积压等。通过对Netty的深入理解,采取启用autoRead机制、设置高低水位和增加channel.isWritable()判断等措施,解决了问题并避免了未来类似故障的发生。
摘要由CSDN通过智能技术生成

业务背景

目前移动端的使用场景中会用到大量的消息推送,push消息可以帮助运营人员更高效地实现运营目标(比如给用户推送营销活动或者提醒APP新功能)。

对于推送系统来说需要具备以下两个特性:

  • 消息秒级送到用户,无延时,支持每秒百万推送,单机百万长连接。

  • 支持通知、文本、自定义消息透传等展现形式。正是由于以上原因,对于系统的开发和维护带来了挑战。下图是推送系统的简单描述(API->推送模块->手机)。

问题背景

推送系统中长连接集群在稳定性测试、压力测试阶运行一段时间后随机会出现一个进程挂掉的情况,概率较小(频率为一个月左右发生一次),这会影响部分客户端消息送到的时效。

推送系统中的长连接节点(Broker系统)是基于Netty开发,此节点维护了服务端和手机终端的长连接,线上问题出现后,添加Netty内存泄露监控参数进行问题排查,观察多天但并未排查出问题。

由于长连接节点是Netty开发,为便于读者理解,下面简单介绍一下Netty。

Netty介绍

Netty是一个高性能、异步事件驱动的NIO框架,基于Java NIO提供的API实现。它提供了对TCP、UDP和文件传输的支持,作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值