我们使用ESP32的一个设备,最近测试中发现一个问题,偶尔会出现PC端TCP已经回应了数据,但ESP32端不能立刻收到,需要延迟一段时间才能收到,有时会延迟2-3秒,对设备的反应时间有较大的影响。
详细的情况如下:
1,ESP32 -- WiFi AP -- switch -- PC
2,ESP32的sdk为esp-idf v2.1.2,作为客户端建立了一个TCP连接,连接着PC的一个服务器程序(使用的mbedtls);
3,ESP32的设备在外部触发时,会给PC发送一包数据并等待PC的回应。
4,现在的问题是,偶尔会出现ESP32得到的回应特别慢(正常情况延迟40-100ms,但异常时可能会延迟1-4s)
5,为了进一步确定问题,我们做了抓包,进行分析:在PC端运行WireShark进行抓包,问题出现时得到的现象如下:
情况1:
a PC端是立刻进行回复了,耗时小于40ms
b ESP32端,延迟1s左右收到回应包(通过select监测socket是否可读,并在可读时打印时间点,发现距离发送耗时1s)
清空2:
a PC端是立刻进行回复了,耗时小于40ms
b ESP32端,延迟1s多收到回应包(通过select监测socket是否可读,并在可读时打印时间点,发现距离发送耗时1s),同时wireshark中出现多次TCP retransmission
TCP 数据丢包或retransmission的问题,我发现论坛中也有不少对应的帖子,好像没有很好地解决:
http://bbs.esp32.com/viewtopic.php?f=2& ... 04b#p16612
http://bbs.esp32.com/viewtopic.php?f=19 ... 17e#p25393
esp-idf v2.1.2偶尔出现回应包相应延迟
-
- Posts: 30
- Joined: Thu Dec 10, 2015 5:27 am
Re: esp-idf v2.1.2偶尔出现回应包相应延迟
下边分别是esp32上的log时间截图和wireshark运行截图
会是什么原因呢?
另外如下图,是另外一次抓到的情况,也是PC的回应随着TCP ACK负载着数据,此时esp32也是响应时间1秒多
可以看到wireshark上3121是esp32发给PC的数据包,3122是PC回应的且随着TCP ACK负载着数据,耗时只有不到30ms,但设备上响应(select可读耗时1.8s)的时间挺长会是什么原因呢?
另外如下图,是另外一次抓到的情况,也是PC的回应随着TCP ACK负载着数据,此时esp32也是响应时间1秒多
- Attachments
-
- tcp retransmission.png (876.1 KiB) Viewed 8095 times
Re: esp-idf v2.1.2偶尔出现回应包相应延迟
我也遇到了类似的问题,请问你解决没有?
-
- Posts: 9761
- Joined: Thu Nov 26, 2015 4:08 am
Re: esp-idf v2.1.2偶尔出现回应包相应延迟
Moved to the Chinese side of the forum.
Who is online
Users browsing this forum: No registered users and 37 guests