昨天刚到的,今天用体验吸毒后的感觉软件开软件什么的有延迟,软件用的时候也会延迟,是系统的问题还是电脑的问题

在程序里禁用了 Nagle 算法还会出现 200ms 延迟么
17:59:03 +08:00 · 2635 次点击
简化的程序是在两个不同的 golang
程序建立一条 TCP 连接:发送端按照一定频率发送数据包(数据包最大 2048 字节,也存在少量较小的数据包);接收端接收数据伪代码如下
rd := bufio.NewReaderSize(conn, bufsz)
rlen, err := rd.Read(rbuf[:])
// handle rbuf
建立 TCP 连接时发送端和接收端都默认禁用了 Nagle 算法(golang 默认 c.SetNoDelay(true)),但是测试中发现有时发送端的 Send-Q 堆积了很多数据,接收端接收数据很慢,大量 Read 出现 200ms 延迟,并且此时发送端输出端的 CPU 占用很低,远低于正常网络数据读写的情况。
17:34:44.418 [INFO] ac03 [processPushMsg] send 39 direct msg to connector conn0101 latency:
17:34:44.418 [DEBU] ac04 [handleTCPConn] before get new bufio reader
17:34:44.418 [DEBU] ac05 [handleTCPConn] before read
17:34:44.621 [DEBU] ac06 [handleTCPConn] end read
17:34:44.621 [INFO] ac07 [processPushMsg] send 81 direct msg to connector conn0101 latency:
17:34:44.621 [INFO] ac08 [processPushMsg] send 38 direct msg to connector conn0101 latency:
17:34:44.622 [INFO] ac09 [processPushMsg] send 39 direct msg to connector conn0101 latency:
17:34:44.622 [DEBU] ac0a [handleTCPConn] before get new bufio reader
17:34:44.622 [DEBU] ac0b [handleTCPConn] before read
17:34:44.622 [DEBU] ac0c [handleTCPConn] end read
17:34:44.622 [DEBU] ac0d [handleTCPConn] before get new bufio reader
17:34:44.622 [DEBU] ac0e [handleTCPConn] before read
17:34:44.825 [DEBU] ac0f [handleTCPConn] end read
17:34:44.825 [INFO] ac10 [processPushMsg] send 81 direct msg to connector conn0101 latency:
17:34:44.825 [INFO] ac11 [processPushMsg] send 39 direct msg to connector conn0101 latency:
我的理解是发送端数据已经发送到本地网络缓冲区,等待对端读取,但是不清楚接收端为什么延迟 200ms 读取。不知从何入手解决。
第 1 条附言 &·&
18:44:11 +08:00
s/并且此时发送端输出端的 CPU 占用很低/并且此时发送端和接收端的 CPU 占用很低
这种现象是随机出现的,有时就会正常的收发数据;并且一旦出现该现象,之后的数据收发,即使发送数据量很小,也会存在 200ms 延迟
14 回复 &| &直到
21:35:05 +08:00
& & 18:47:40 +08:00 via Android
你知道拥塞算法吗?
& & 18:56:53 +08:00
@ 模糊的知道一些概念,但是不知道具体与哪些内核参数相关,如何调优,请问有哪些监控指标可以反映网络拥塞状况?还是需要应用层做流量控制?
& & 20:02:17 +08:00
你这跟tcp栈没关系吧~ 看log
17:34:44.418 [DEBU] ac05 [handleTCPConn] before read
17:34:44.621 [DEBU] ac06 [handleTCPConn] end read
这两条记录中间应该是
rlen, err := rd.Read(rbuf[:])
吧?
我不懂golang的这个接口, 猜想bufferReader在等数据填满它然后返回或者超时(200ms)返回。所以你发包小的时候,它总是需要超时才能返回~ 于是就有了200ms的延迟
& & 20:29:06 +08:00
那两条日志确实是在 rlen, err := rd.Read(rbuf[:]) 的前后,但是这个 read 接口只调用一次 reader 的 read,产生延迟应该不是需要填满 buf 引发的。
// Read reads data into p.
// It returns the number of bytes read into p.
// It calls Read at most once on the underlying Reader,
// hence n may be less than len(p).
// At EOF, the count will be zero and err will be io.EOF.
func (b *Reader) Read(p []byte) (n int, err error) {
& & 21:24:40 +08:00
看文档确实不会超时~~
那或许需要wireshark之类的东西截个包看看~
& & 23:15:46 +08:00 via Android
不需要禁用啊,加nodelay就好
wireshark截包没有用,因为无论用不用nagle,出来的都是合法的tcp包,大小不同而已。
& & 23:51:37 +08:00
@ 说的禁用 Nagle 就是调用了 c.SetNoDelay(true)
& & 23:58:21 +08:00
用 strace 查看了系统调用,接收端 200ms 出现在 epoll_wait
[&... epoll_wait resumed& {{EPOLLIN|EPOLLOUT, {u32=, u64=928}}}, 128, -1) = 1 &0.202147&
]
接收端日志:
23:40:19.629 [INFO] 54f99 [processPushMsg] send 81 direct msg to connector conn0101 latency:
23:40:19.629 [DEBU] 54f9a [handleTCPConn] before get new bufio reader
23:40:19.630 [DEBU] 54f9b [handleTCPConn] before read
23:40:19.834 [DEBU] 54f9c [handleTCPConn] end read rlen: 4068
23:40:19.834 [INFO] 54f9d [processPushMsg] send 39 direct msg to connector conn0101 latency:
strace 日志(sudo strace -f -v -x -tt -T -p 92324 -o strace_recv.log):
:19.629828 write(3, & 23:40:19.629 [INFO] 5&..., 115) = 115 &0.000038&
:19.629958 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000031&
:19.630103 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000032&
:19.630219 write(3, & 23:40:19.629 [DEBU] 5&..., 81) = 81 &0.000036&
:19.630337 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000030&
:19.630479 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000031&
:19.630600 write(3, & 23:40:19.630 [DEBU] 5&..., 65) = 65 &0.000036&
:19.630717 read(9, 0xc20805f01c, 4068) = -1 EAGAIN (Resource temporarily unavailable) &0.000033&
:19.630833 write(8, &\x01\x03\xf1\x00\x01\x00\x0c\x55\x5c\xa8\x4d\x62\xbb\x97\x68\xde\x01\xd1\x12\x02\x00\x10\x31\x34\x33\x32\x31\x33\x35\x37\x32\x32&..., 1013) = 103&
:19.631027 write(8, &\x01\x01\xf9\x00\x03\x01\xd4\x55\x5c\x9c\x2a\x62\xbb\x97\x68\x8c\x00\x02\xa9\x55\x5c\x9c\x2a\x62\xbb\x97\x68\x8c\x00\x02\xfc\x55&..., 509) = 509 &0.000067&
:19.631187 write(8, &\x01\x03\xf1\x00\x03\x03\xcc\x55\x5c\x9c\x29\x62\xbb\x97\x68\x8c\x00\x01\x3d\x55\x5c\x9c\x2a\x62\xbb\x97\x68\x8c\x00\x02\x93\x55&..., 1013) = 058&
:19.631332 epoll_wait(6, {}, 128, 0) = 0 &0.000035&
:19.631440 epoll_wait(6,
&unfinished ...&
:19.631496 &... futex resumed& ) = 0 &0.205872&
:19.631554 clock_gettime(CLOCK_MONOTONIC, {2247030}) = 0 &0.000033&
:19.631664 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000031&
:19.631767 select(0, NULL, NULL, NULL, {0, 20} &unfinished ...&
:19.631845 &... futex resumed& ) = 0 &0.206158&
:19.631911 epoll_wait(6, {}, 128, 0) = 0 &0.000064&
:19.632048 &... select resumed& ) = 0 (Timeout) &0.000248&
:19.632112 clock_gettime(CLOCK_MONOTONIC, {2807377}) = 0 &0.000031&
:19.632215 futex(0x8f4de0, FUTEX_WAIT, 0, {60, 0} &unfinished ...&
:19.632279 futex(0x8f5838, FUTEX_WAIT, 0, NULL &unfinished ...&
:19.833623 &... epoll_wait resumed& {{EPOLLIN|EPOLLOUT, {u32=, u64=928}}}, 128, -1) = 1 &0.202147&
:19.833780 clock_gettime(CLOCK_MONOTONIC, {4480859}) = 0 &0.000032&
:19.833902 futex(0x8f5838, FUTEX_WAKE, 1) = 1 &0.000044&
:19.834024 futex(0x8f4de0, FUTEX_WAKE, 1) = 1 &0.000042&
:19.834131 read(9, &\x5c\x9c\x29\x62\xbb\x97\x68\x8c\x00\x01\x56\x63\x6f\x6e\x6e\x30\x31\x30\x31\x55\x5c\x9c\x2a\x62\xbb\x97\x68\x8c\x00\x03\x24\x63&..., 4068) = 039&
:19.834268 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000030&
:19.834476 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000033&
:19.834601 write(3, & 23:40:19.834 [DEBU] 5&..., 73) = 73 &0.000042&
:19.834778 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000032&
:19.834896 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000030&
:19.835061 clock_gettime(CLOCK_REALTIME, {, }) = 0 &0.000033&
:19.835180 write(3, & 23:40:19.834 [INFO] 5&..., 115) = 115 &0.000037&
& & 00:12:56 +08:00
感觉是发送端23:40:19.833才把包发出来~
& & 00:21:12 +08:00
如果是这个问题发个感谢呗。
& & 01:57:57 +08:00 via Android
@ nice!学习了
@ 抱歉,看漏了
& & 10:08:13 +08:00
@ 这是计算RTT(超时重传时间)的方法,似乎也有可能,sender第一次发包,接受者没收到,然后超时重传了一遍,接受者就收到了,但是这个情况偶尔一次 两次还可能,可lz说了“并且一旦出现该现象,之后的数据收发,即使发送数据量很小,也会存在 200ms 延迟”,感觉不像啊~
@ 还是截个包最清楚,debug 网络的issue,截包是最直观的方法~
& & 10:11:15 +08:00
@ 很有帮助 :)
@
我再跟踪一下看个究竟
& & 21:35:05 +08:00 via Android
但是测试中发现有时发送端的 Send-Q 堆积了很多数据,接收端接收数据很慢,大量 Read 出现 200ms 延迟,
说明不是客户端问题,server读取超时,更多地问题在于你read后处理问题吧,你简单的读不处理 还能重现吗?网络丢包引起的重传都是很快就能清理掉的,你的recv q有数据也证明不是网线问题。
& · & 3210 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 51ms · UTC 01:50 · PVG 09:50 · LAX 18:50 · JFK 21:50? Do have faith in what you're doing.主题帖子积分
彩虹糖:72
WIFI情况下息屏10分钟后QQ消息延迟亮屏声音和消息才显示
&查看:6643
OPPO Find 7(轻装联通版)
正式版-140814_ColorOS 1.2
通信 > wifi/蓝牙/NFC
必现(90%-100%)
同一个WIFI环境下,我用了别的手机实验都不延迟,黑屏之后也能及时收到QQ消息,但是Find7联通标准版在黑屏几分钟之后,我用电脑给我手机发QQ消息的时候却不能及时出提示音,一点反应都没有。等三五分钟之后才能响。有的时候双击亮屏后提示音才响让后看见一大堆QQ消息。希望早日可以给解
每次息屏都出现过。
满意度评价
经本人测试百分百出现过这种情况,有时候息屏等3到5分钟后再给我自己QQ发消息完全没反应。我怀疑是不是跟QQ兼容的不是很好啊。我个人认为和哪个软件兼容不好都比和QQ兼容不好强,因为现在几乎所有人都在用QQ软件社交聊天,如果有个急事人联系我,我还不知道要等个10多分钟才收到消息。
主题帖子积分
彩虹糖:262
看看qq是不是在纯净后台黑名单
彩虹糖36832
主题帖子积分
彩虹糖:36832
楼主您好,您进入WIFI设置看下是否开启了WLAN优化?
[url=http://weibo.com/u/?s=6uyXnP][/url]
主题帖子积分
彩虹糖:72
您好ROM解答组,那些我都检查过了不是那里的原因,我玩智能手机也有断时间了不属于小白。 纯净后台我没开过 WIFI那个在息屏后永久开启我也点开了 还是有这种毛病存在 短信什么的电话提醒还好都不延迟就QQ
主题帖子积分
彩虹糖:72
楼主您好,您进入WIFI设置看下是否开启了WLAN优化?
您好ROM解答组,那些我都检查过了不是那里的原因,我玩智能手机也有断时间了不属于小白。 纯净后台我没开过 WIFI那个在息屏后永久开启我也点开了 还是有这种毛病存在 短信什么的电话提醒还好都不延迟就QQ
这个真的影响到了我,因为哪个第三方软件延迟都可以就是QQ别延迟啊,大部分人现在都用QQ聊天。希望在后续的系统中可以优化一下哪怕延迟30秒也无所谓啊 就是别延迟3五到5分钟了。
彩虹糖13722
主题帖子积分
彩虹糖:13722
测试的小伙伴帮忙看一下这个问题,确认一下是什么原因导致的!及时完善一下
主题帖子积分
彩虹糖:72
测试的小伙伴帮忙看一下这个问题,确认一下是什么原因导致的!及时完善一下 ...
谢谢了 工程师大人们 希望早点完善 支持OPPO在不久的将来会成为国产手机的自豪!赞
亲,你那边出现的概率是不是很高呀?确认没有打开纯净后台哟!&
彩虹糖13722
主题帖子积分
彩虹糖:13722
谢谢了 工程师大人们 希望早点完善 支持OPPO在不久的将来会成为国产手机的自豪!赞 ...
亲,你那边出现的概率是不是很高呀?确认没有打开纯净后台哟!
主题帖子积分
彩虹糖:255
感谢楼主反馈,请问有木有打开纯净后台,或者一些第三方限制上网的工具?
我们这边多安排测试下
主题帖子积分
彩虹糖:72
本帖最后由 U 于
21:47 编辑
感谢楼主反馈,请问有木有打开纯净后台,或者一些第三方限制上网的工具?
我们这边多安排测试下 :handshak ...
我对Find7手机里的功能还是有一点了解的。基本的设置操作还是知道的。 纯净后台没开&&WiFI那个在息屏的时候永久开启,也都开了。 数据连接的时候一点都不延迟。 就是WIFI 延迟 希望能优化一下 这样就完美了 而且我也没ROOT&&如果是ROOT后出现的毛病我也不会再这里反馈的,本人不喜欢ROOT 怕把手机弄坏 我用过三个智能手机全没ROOT 前俩个是华为 第三个是Find7
申请条件:截图公测qq群中的证明信息,提供公测名称和群里的号码。截图并发私信给管理员阳光
申请条件:截图内测qq群中的证明信息,提供内测名称和群里的号码。截图并发私信给管理员阳光
仅限在新年期间申请开放
申请条件:限时申请,截止日期2月11日,鸡年大吉。
狗年大吉,人旺财运旺
申请条件:截图微博关注ColorOS账号,并私信发图片给管理阳光
申请条件:截图微信关注ColorOS账号,并私信发图片给管理阳光
第四届内测
第四届内测
第四届公测
第四届公测我的电脑是刚买不久的,之前我在深圳用的挺好的,买了不到半个月吧,我就回家了,在家装了网线之后,发现不管是启动什么软件都有延迟的现象,就算开个浏览器双击之后都要等个三秒左右才有反应,这是为什么?别人说是我的系统不行,要换个系统,这和系统有关系吗?
你的电脑启动任何程序和游戏都会延迟三到五秒,可能是开机启动项过多造成的,建议你重新优化一下开机启动项试试。
其他答案(共1个回答)
没多少关系,有久了,系统会产生垃圾运行速度有所下降,清理系统垃圾。
下载系统优化大师,优化系统。下载360安全卫士,优化开机速度。
1.人物行走
  在游戏画面中,你所控制的角色位于屏幕中央位置附近。移动位置时,只需将鼠标移动到想到达的地方,点一下左键即可,按住鼠标左键不放,可以按照鼠标方向...
基本操作这里全有
官网基本操作介绍:
这种情况在组装机的使用过程中经常发生,具体的解决方向是确定故障出在哪里,方法是分析法。
首先,按下开机按钮几分钟后,尽管显示器无显示,你可以按几下键盘上的键,看...
幻9幻10的大怪刷新延迟都是5分钟,我确定!
答: 建议你尝试启动到安全模式下进行删除试试,如果仍旧出现此提示,则运行chkdsk d: /f对D盘进行查错,并可尝试用Unlocker、Killbox、IceSw...
答: 学电脑路子很广,可以做室内设计,也可以做网页推广,电子商务,还能去接单子,也可以做传媒,现在是信息化社会,所以,选择计算机,没错!
答: 程序员、高校专业老师、发烧友
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415当下软件园 / 汇聚当下最新最酷的软件下载站!
热门搜索:
您的位置:
> 百度卫士启动项延迟启动有什么用 延迟启用是什么意思
百度卫士启动项延迟启动有什么用 延迟启用是什么意思
想必大家都知道百度卫士有启动项延迟启动功能,但具体这个功能怎么用以及什么是延迟启用,相信大家不是非常了解,下面就通过这篇文章跟大家分享一下百度卫士启动项延迟启动有什么用。
在百度卫士的启动项选项中,为用户提供了:禁用、延迟、百度一下以及打开安装目录这4个选项,这也是有别于其他电脑管理软件仅仅提供启用与禁用两个选项,不仅可以选择的范围增加,而且也兼顾了用户的实际使用体验。同时,启动项延迟启动也是百度卫士在电脑加速工作上的一大特色。
百度卫士启动项延迟启用是什么意思
问:什么是延迟启用?
部分软件和服务需要开机启动,不能禁用,如果您的开机项过多则会明显拖慢开机速度。因此百度卫士提供了延迟启动功能,可以将这些项目设置为延迟启动,等电脑开机完成后,再启动这些项目。既提升了开机时间,又不影响这些软件和服务的正常工作。
席卷全球的WannaCry勒索病毒仍在疯狂的攻击他人的电脑,中国等90多个国家中招,感染电脑超过10万台。还没有被病毒所侵扰的用户不要慌张,为使大家免于受到勒索危害。可通过以下2种方法防范勒索病毒危害。
360IE盾甲是360针对IE停服推出的最新安全产品,很多想要继续使用IE旧版的用户应该都想知道在哪里开启360IE盾甲,现在,就让小编为大家详细的介绍一下360IE盾甲开启方法吧!
Copyright (C)
www.downxia.com.All rights reserved.

我要回帖

更多关于 体验吸毒后的感觉软件 的文章

 

随机推荐