netty 接收不到客户端传来的消息_Netty-服务端接收不到客户端发送消息案例

得益于高性能、低时延的优势,Netty被广泛应用于物联网领域,用于海量终端设备的协议接入、消息收发和数据处理。当服务端出现性能瓶颈或者阻塞时,就会导致终端设备连接超时和掉线,引发各种问题,因此在物联网场景下,一定要防止服务端代码因为编码不当导致的意外阻塞,进而无法处理终端请求消息。服务端接收不到客户端发送消息案例堆栈分析以及解决方案NioEventLoop线程防死锁策略总结服务端接收不到客户端发送...
摘要由CSDN通过智能技术生成

得益于高性能、低时延的优势,Netty被广泛应用于物联网领域,用于海量终端设备的协议接入、消息收发和数据处理。

当服务端出现性能瓶颈或者阻塞时,就会导致终端设备连接超时和掉线,引发各种问题,因此在物联网场景下,一定要防止服务端代码因为编码不当导致的意外阻塞,进而无法处理终端请求消息。

服务端接收不到客户端发送消息案例

堆栈分析以及解决方案

NioEventLoop线程防死锁策略

总结

服务端接收不到客户端发送消息案例

服务端使用Netty构建,接受客户端请求消息,然后下发给后端其他系统,最后返回应答给客户端。系统运行一段时间后发现服务端收不到客户端发送的信息,导致业务终端。

服务端运行一段时间后相关日志:

服务端每隔一段时间会接收不到消息,隔一段时间后恢复,然后又没消息,周而复始。根据实际情况排查了客户端没法消息的情况以及CPU资源导致的周期性阻塞还有内存导致频繁GC引起业务线程暂停。

堆栈分析以及解决方案

排除上述原因,有可能是Netty的NioEventLoop线程阻塞,导致TCP缓冲区的数据没有及时读取,故障期间采用服务端的线程堆栈进行分析,结果如图:

如图,Netty的NioEventLoop读到消息后,调用业务线程池执行业务逻辑时,RejectedExecution出现异常,由于后续的业务逻辑由NioEventLoop线程执行,可以判定业务拒绝策略

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值