netstat中sendq/recvq用于排查发送端发送数据的问题

web同事开发了一个用于接收syslog数据的服务器,不清楚web的开发方式,用来联调的发送端是我们的C模块

反馈syslog udp形式接收正常,速度正常,数量也正常,syslog tcp形式接收开始比较快后面越来越慢,并且知道接收不到后数量和发送端发送数量也对不上

查看接收端发现recvq很高,并且87616这个数字停留了很久了

10.19.17.10是服务端(接收),10.19.17.160是客户端(发送)

查看发送端的sendq也很高

发送端堆栈的堆栈停留在最上面一层停留在系统调用send上

以上接着查看发送端的网络问题发现延迟这些都正常,并且发送端使用syslog udp发送也是没问题的,所以判断为接收端问题,接收端处理太慢导致的,如此答复web同事后。web端最后排查是他们自身的问题。原话是:"不是,有问题的这种我是通过syslog提供的包搞的,之前没问题的用的apache的包搞的"。不过咱也不懂web,只要不是我们的问题就行了,不过大概也可以判断出来是web的接收端处理逻辑有问题导致发送端发送的数据阻塞了。

总结:

这里主要是使用netstat或者ss命令中的sendq和recvq来排查问题

sendq(发送队列)和recvq(接收队列)是系统级别的队列,而非特定于某个程序的队列。它们属于TCP/IP协议栈在网络接口和应用程序之间维护的数据缓冲区。

系统级别:

这两个队列是由操作系统内核管理的,用于在网络通信过程中暂存数据。

它们的存在是为了确保数据在网络传输中的可靠性和顺序性。

与程序的关系:

虽然sendq和recvq不是直接由程序创建的,但程序确实会与之交互。

当程序通过socket发送数据时,数据会被放入sendq中等待发送。

当程序通过socket接收数据时,它会从recvq中读取数据。

相关推荐
HalvmånEver1 小时前
Linux:基础开发工具(三)
linux·运维·服务器·开发语言·学习·gcc/g++
阿巴~阿巴~1 小时前
UDP服务端绑定INADDR_ANY后,客户端该用什么IP访问?
服务器·网络·udp协议·网络测试·udp套接字编程·inaddr_any
wanhengidc2 小时前
巨 椰 云手机稳定挂机 搬砖
运维·服务器·游戏·智能手机·云计算
橘子真甜~3 小时前
C/C++ Linux网络编程4 - 解决TCP服务器并发的方式
linux·运维·服务器
last demo3 小时前
Linux 逻辑卷管理
linux·运维·服务器
初听于你4 小时前
深入解析IP, ICMP, OSPF, BGP四大核心网络协议
服务器·网络·网络协议·计算机网络·信息与通信·信号处理
网硕互联的小客服4 小时前
如何解决 Linux 文件系统挂载失败的问题?
linux·服务器·前端·网络·chrome
门思科技4 小时前
主流 LoRaWAN 网络服务器深度对比:ThinkLink、TTS、ChirpStack、Loriot 与 Actility 选型指南
运维·服务器·网络
深耕AI11 小时前
【完整教程】宝塔面板FTP配置与FileZilla连接服务器
运维·服务器
无聊的小坏坏13 小时前
从单 Reactor 线程池到 OneThreadOneLoop:高性能网络模型的演进
服务器·网络·一个线程一个事件循环