当前位置: 首页 > article >正文

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中读取数据。


http://www.kler.cn/a/385037.html

相关文章:

  • 文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
  • CKA认证 | Day1 k8s核心概念与集群搭建
  • TensorFlow|咖啡豆识别
  • Spark本地模式安装
  • 【bug日志-水】解决本地开发下代理和url同名导致刷新404的问题
  • C++builder中的人工智能(9)如何在C++中创建AI二进制/Heaviside步进函数
  • js中怎么把excel和pdf文件转换成图片打包下载
  • 云上拼团GO指南——腾讯云博客部署案例,双11欢乐GO
  • 推导将点映射到平面坐标系的计算公式
  • 金媒婚恋相亲系统10.4择爱开源旗舰版支持微信小程和抖音小程序上架
  • 鸿蒙系统与python
  • 【WebRTC】视频采集模块流程的简单分析
  • 收集的linux命令/Docker命令/git命令
  • 第2章-立项2.5立项的三重境界
  • 【数据集】【YOLO】【目标检测】道路结冰数据集 1527 张,YOLO目标检测实战训练教程!
  • 软件架构演变:从单体架构到LLM链式调用
  • qt QTextCursor详解
  • java的面向对象(从入门到深入)
  • harmony os 四层架构分析
  • Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作
  • Hive:explode 和 lateral view
  • 算法通关(3) -- kmp算法
  • leetcode155:最小栈
  • Java中怎样将bytes转换为long类型?
  • blender中,渲染是指渲染图片or视频 ,还是模型?
  • 前端开发实现自定义勾选/自定义样式,可复选,可取消勾选