Linux应用程序等待工位板指令应答超时500ms左右才等到应答的问题与排查

news/2024/5/17 19:52:18 标签: LwIP, TCP, TCP NODELAY, wireshark

Linux应用程序等待工位板指令应答超时500ms左右才等到应答的问题与排查

+---------------------+                 +---------------------+
|                     |                 |                     |
|                     |      以太网      |                     |
|                     +---------------->+     控制器(IP盒子)    |
|       Linux应用      |                 |                     |
|                     +<----------------+                     |
|                     |                 |                     |
|                     |                 |                     |
+---------------------+                 +----+-------^--------+
                                             |       |  UART
                                             v       |
                                           +-+-------+---+
                                           |    RS422    |
                                           +--^----+-----+
                                              |    |
                                              |    |  UART
                           +------------------+----vv+
                           |                         |
                           |                         |
                           |        工位板            |
                           |                         |
                           |                         |
                           |                         |
                           +-------------------------+


问题描述:

应用程序控制缴费机工位板的指令和缴费机回复应答的时间之间不能超过500ms, 但是搞Linux应用同事测试一段时间就会出现应答发送超时的问题

问题排查与定位:

程序打印收到上层应用的控制指令到回复上层应用应答发送完成的时间,测试得到结果显示为1ms左右即不存在超时500ms。

从物理层面检测出现超时500ms时的控制指令和应答信号之间的时间间隔:使用逻辑分析抓取两条指令的时间间隔,发现接收到控制指令到缴费机工位板发出应答300us左右。

由此可以判定发送应答超时不是工位板的问题。

控制指令数据接收和应答数据的发送都要经过控制器(类似网关)的转发,所以判断应答是控制器转发协议出现了延时。

检查控制打印的出问题时间控制指令和应答的时间间隔发现控制器的发送也不存在超时500ms左右。

协议要经过控制器(IP盒子,类似网关)通过网络发给应用,软件开发的同事怀疑是网络出现了延时。

TCP 套接字默认开启了所谓的"nagle算法"(也就是没有设置TCP_NODELAY选项),会延缓发包时间,以便和后面(需要发送)的网络包合并在一起发送。这个算法主要用于减少网络包的数量,从而减少TCP报文头的吞吐量开销

通过wireshark抓包分析,发现出现超时延时500ms果然是网络引起的。

需要修改控制器(IP盒子)的源码将创建的TCP服务器设置TCP_NODELAY选项


http://www.niftyadmin.cn/n/4925386.html

相关文章

【HTML】label 标签

在HTML中&#xff0c;<label> 标签用于为表单元素创建标签文本或标题。它可以与输入字段&#xff08;如文本框、单选按钮、复选框等&#xff09;和其他表单元素关联起来&#xff0c;以提高可用性和可访问性。 <label> 元素有两种常见的用法&#xff1a; 包裹方式…

一键批量删除文件名中的空格,轻松整理您的文件

随着数字化时代的到来&#xff0c;我们的电脑里积攒了越来越多的文件&#xff0c;但是随之而来的问题是&#xff0c;文件名中的空格可能会导致一些不便和混乱。为了解决这一问题&#xff0c;我们开发了一款便捷实用的工具&#xff0c;可以一键批量删除文件名中的空格&#xff0…

【leetcode】142. 环形链表 II (medium)

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…

Spring(13) IOC的工作流程

目录 一、定义二、Bean的声明方式三、IOC的工作流程 一、定义 IOC&#xff1a;全称是 Inversion Of Control&#xff0c;也就是控制反转&#xff0c;它的核心思想是把对象的管理权限交给容器。应用程序如果需要使用某个对象的实例&#xff0c;那么直接从 IOC 容器里面去获取就…

word横向页面侧面页码设置及转pdf后横线变竖线的解决方案

在处理材料的时候&#xff0c;会遇到同一个文档里自某一页开始&#xff0c;页面布局是横向的&#xff0c;这时候页码要设置在侧面&#xff0c;方法是双击页脚&#xff0c;然后在word工具栏上选择“插入”——>“文本框”——>“绘制竖版文本框”&#xff0c;然后在页面左…

机器学习、深度学习项目开发业务数据场景梳理汇总记录二

本文的主要作用是对历史项目开发过程中接触到的业务数据进行整体的汇总梳理&#xff0c;文章会随着项目的开发推进不断更新。 这里是续文&#xff0c;因为CSDN单篇文章内容太大的话就会崩溃的&#xff0c;别问我怎么知道的&#xff0c;问就是血泪教训&#xff0c;辛辛苦苦写了一…

无服务器、Rust,都是旧技术的二次创业!

原文标题&#xff1a;​​Serverless Is the New Timeshare​​&#xff0c;作者&#xff1a;Shai Almog 还记得大型机吗&#xff1f;无服务器就好比如&#xff1a;我们拥有这台机器&#xff0c;你来我这里租借。创新往往都是在踩在巨人肩膀上诞生&#xff01; 分时度假是一种…

语音信号的A律压缩和u律压缩matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 A律压缩算法 4.2 μ律压缩算法 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(…