在平板上发送消息延迟严重
gitthb opened this issue · comments
凌动处理器的平板。循环调用async_send发送消息,延迟很大,开始是两三秒,很快就是延迟3、4分钟。同样的代码在笔记本电脑上就没有这么大延迟,保持在3、4秒钟左右。请问是什么原因?是平板性能跟不上?
- 延迟你是怎么测出来的?我严重怀疑你的测试方式错了。
- 别说延迟3 4分钟了,延迟3 4秒理论上就是不可能的。
- 如果你确认你的测试方法没错,那估计是网络有严重问题,你是不是WIFI下测试的?会不会WIFI网络有问题。此时你可以下载一个网络调试助手(网上搜搜,应该有很多),测一下延迟,确认是不是网络问题。
平板上软件启动后服务器收到的一个消息延迟很少,后来就延迟越来越大。
最好的测延迟的方法是测来回,发数据出去,等收到数据时,用收数据时间减去发数据时间,时间差是在同一台机器上计算的,这更准确。
但是既然各机器都做过了时钟同步,而且延迟有3 4分钟的情况,那应该不是时钟同步有问题导致的。
你用asio2自带的example测试一下看看吧,测试完如果发现延迟正常(延迟正常的表现应该是和ping你服务器的机器的超时基本相同才对),那说明你业务代码有问题(后来就延迟越来越大,每秒4个消息这就非常少的消息量,说是网络阻塞的可能性不大)
如果用asio2自带的example测还有问题,那就再找个网络助手来测,肯定能找到原因。我不知道你的原因在哪里。
通过在发送消息前Sleep来讲延时控制到2秒内,这种只是临时的解决办法。真正的还是要看看是不是平板性能导致需要重写代码。。
你用asio2的example测了没
平板性能导致的延迟,我认为是这个原因的可能性太小了,可以忽略不计,因为我们的项目在常用安卓机(局域网工作),没有任何问题,根本没发现有延迟到不可接受的现象,而且我们的产品的实时性要求很高。
发送端我用example里的例子试了,也有2秒左右的延时。我再看看是不是服务端导致的。另外,我用的是websocket的通信方式,这种方式延时2秒正常么?
不正常
但偶尔有1包延迟2秒是有可能的,用ping命令对比一下,延迟大的时候,必然ping延迟也大
应该server和client都用example,来测试一下
我clinet完全用example里面的来跑,ubuntu20 虚拟机里面直接编译exmaple,跑出来来回是30毫秒左右的时间间隔;但是同样的代码放在windows下去跑(qt环境),跑出来就是要有2秒左右的间隔。(代码是一样的,pro也没有什么特别的)。为什么会这样呢?qt里面pro用了《QT = core
CONFIG += c++17 cmdline》。是因为qt会对这个异步发送有影响么?改用vs2017编译后运行,也是同样的有两秒延时。