NDK持续打印

在高吞吐的NDK应用中,TCP保活定时器的打印导致性能下降。通过分析NDK源码,发现默认设置会频繁触发TCP Keep Timeout信息。调整NDK的日志级别配置,以减少不必要的打印。但在NDK 2.23版本中,由于一个bug,即使在cfg文件中配置,也无法生效。解决方法是通过引入勾子函数,在启动时正确设置日志级别,从而恢复打印系统的正常运行,提高系统性能。
摘要由CSDN通过智能技术生成

在一次联调中发现,NDK在不停打印”TCP: Keep Timeout”。在高吞吐的系统负载下,打印会大大降低系统性能,造成丢包、高延迟等后果。
为了解决这一问题,首先要确认该打印的原因。然后再想办法减少打印。

打印原因是TCP有保活定时器,当超时时会触发这条消息。当一条TCP连接建立后,当一段时间连接上没有收发数据时,TCP会发送保活消息。NDK的默认设置是线路静默2小时后开始发起保活,每隔75秒发送一次,连续10分钟无响应时断开该连接。

从NDK源码中搜索,马上找到了这条打印的代码:

========== stack/tcp/tcptime.c 109 109 ============
    DbgPrintf(DBG_INFO,"TCP: Keep Timeout");

发现这是一条DBG_INFO级别的打印。NDK有四种不同的打印级别,分别对应于不同的信息级别。在源码中可以找到。

========== inc/os/osif.h 294 297 ===&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值