一个DNS请求引起的网络阻塞

本文分析了一起Linux应用程序网络丢包问题,发现应用程序的gmond组件Recieve-Q持续增长,疑似内核socket接收丢包。通过netstat和htop排除了CPU性能瓶颈,使用strace定位到问题源于DNS请求。gmond进行DNS解析时出现阻塞,影响网络报文接收。解决方案包括优化DNS服务器配置、避免gethostbyname在多线程环境中的阻塞及提高DNS解析效率。
摘要由CSDN通过智能技术生成

前段时间遇到Linux应用程序网络丢包问题,应用程序接收网络报文数据丢失界面展示信息不全.以下是对该问题进行基本的简要分析与定位的过程。

 

在网络转发路径未发现网络传输丢包情况.通过Linux netstat查看gmond应用程序socket状态发现一个奇怪的现象,gmond Recv-Q网络报文数量持续不断增长,且多次查看状态均未出现清零的情况,初步怀疑内核socket接收存在丢包即CPU处理性能瓶颈导致应用程序无法及时接收网络报文。

 

netstat -lnup输出:



htop查看系统应用进程CPU占用率并未发现CPU满负荷运行情况直接排除CPU处理性能瓶颈导致应用程序无法及时接收网络报文。问题转向了gmond应用程序,如何跟踪应用程序系统调用.那就是strace!

 strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用程序工作过程的目的。strace使用方法请参考网上资源.

 

strace -p 2747 输出,发现gmond应用程序间歇性的执行系统调用如下:



gmond应用程序在进行DNS请求解析,在Linux下常用gethostbyname函数用于域名解析,其内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值