设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 875|回复: 3

在中国使用比特彗星DHT会断网卡顿,国外运营商反而没事,TCP/UDP连接数限制

[复制链接]
 成长值: 333

签到天数: 4736 天

[LV.Master]伴坛终老

发表于 2024/5/12 22:29 | 显示全部楼层 |阅读模式 |Google Chrome 124.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
在中国使用比特彗星DHT会断网卡顿,国外运营商反而没事,TCP/UDP连接数限制

基本不存在这个问题,如果使用带ssh的路由器可以观察top任务管理器的占用情况
出现问题主要是小部分运营商限制了宽带TCP/UDP并发连接数
如果设置上减少这个数值会导致udp阻塞发送引起内存泄露,永远卡在缓冲区里导致占用几十个G内存无法释放,目前队列只能丢弃dht,还有tracker,dns等都是会阻塞的
遇到问题关闭禁用DHT基本可以解决大部分问题,包括高级设置提供了禁用udp tracker选项,也可以打开,此时udp产生的流量基本只有dns了
巨便宜的50块钱tp千兆路由器,udp小包承受能力都是16W pps,何来光猫或者路由器卡死一说,只能说他被运营商限制了,但是不了解他自己被限制了,所以自己以为觉得是路由器出问题了
正如你说的,并不知道真正的原因是被运营商限制
可以翻一下以前的帖子,当时network.max_udp_pkt_per_sec默认设置比较小,然后就导致内存大量积累在UDP 传输缓冲区,经过内存调试分析发现在DHT和大量的udptracker上引起阻塞,也有很多相关的反馈,然后就调大了,你可以自己试一下把数值改成10,是不是会发现全部积累进去缓冲区了,然后就发送阻塞加内存泄漏了,不过现在版本DHT支持队列丢弃,稍微有一些好转了,但是tracker还是会引起udp阻塞的
首先,默认设置不适合改,毕竟比特彗星在中国地区的用户量依旧是最小众的,主要用户群体都在海外,国外运营商就没这种小动作来限制并发连接数,对于他们,更明显能看到的是UDP产生的内存为什么异常高

现在版本DHT优化做法是
每30分钟查询一次DHT,然后缓存到内存数据库中,之后BT任务通过缓存数据直接获取结果,可以最大程度的节省数据包产生

问题原因是,在这30分钟内,虽然DHT已经有了本地内存数据库,如果收到了他人发送来的数据包,那么比特彗星会进行回包通知他人,产生了发送包,如果是公网ip,那么比特彗星能收到他人发来更多的数据包,也就需要发送出去更多的数据包用于回复

优化方案我觉得应该可以把这个回复包砍掉?或者出个选项专门限制这个回复包的数值,可以设置不回包,或者每秒最多回1个包
可以观察到比特彗星在运行过程中,平均有50-200个数据包一秒

在国内一些移动运营商,可能限制用户宽带连接数为10,所以50>10,就引起了上网变慢,tcp连接建立丢包等现象,但是已经在运行的QQ,正在玩的英雄联盟等游戏却是一些正常没有掉线,ping www.baidu.com 正常没有丢包,路由器能够正常打开192.168.1.1后台管理面板,但是就是上不去网或者上网很卡,这种情况就是被运营商限制了连接数

而不是所谓的路由器卡死,因为路由器的承受能力普遍在16w-30w,远远>10 这个运营商的限制值

就和udp限制了 network.max_connecting_connections_per_tracker 一样,我觉得加个选项限制DHT回包应该不难,不知道为什么迟迟不肯加

至于每30分钟产生一次查询DHT,我认为是合理的,虽然这个查询过程会产生2000-5000包一秒,但是只会持续一小会就查询完毕,这个地方应该可以不用改动,或者想彻底解决也可以改,同时应用在DHT发送并发设置里,并且查询持续1分钟就彻底停止线程,避免设置的数值过小导致一直在发送查询取不到DHT缓存

总体来说就是DHT有两种数据包
1.收到他人请求的回复包(50-200 pps)
2.每30分钟主动发送一次查询缓存的包(2000-5000 pps)

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

签到天数: 1135 天

[LV.10]以坛为家III

发表于 2024/5/13 05:29 | 显示全部楼层 |Firefox 125.0|Windows 10
电信不会断网,但是大流量上传了会被墙外网,淘宝等还能访问
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 520 天

[LV.9]以坛为家II

发表于 2024/5/13 13:25 | 显示全部楼层 |Google Chrome 109.0.0.0|Windows 10
当年我的RM2100刷op真的卡到进不了后台,先进后台能看到负载飙到14。当年的udp发包默认好像是2000,没注意op默认连接数多少,应该是16384。
换成padavan之后也照样进不了后台,才改成32768,udp再改成200,发现连接数稳定在2W,就这样定下来这么用的。
后来换成ax6s了,刷op,连接数16384,udp500上网照样卡,但是改成32768就能在断网的时候进后台,udp再改成200,又接着用到现在。
TP之类的便宜路由器比软路由更能扛,说不准人家来硬的呢(指硬件NAT转发)?
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

 成长值: 333

签到天数: 4736 天

[LV.Master]伴坛终老

发表于 2024/5/13 18:56 | 显示全部楼层 |Google Chrome 124.0.0.0|Windows 10
smilesadness 发表于 2024/5/13 13:25
当年我的RM2100刷op真的卡到进不了后台,先进后台能看到负载飙到14。当年的udp发包默认好像是2000,没注意o ...


检查路由器后台是否能打开 ping路由器是否正常为1ms,从描述上面来看,内核已经卡死,可以确认路由器系统固件有问题 是不是刷了第三方固件导致适配兼容bug,这种情况要发给路由器固件开发者去找代码来修复内核系统层的问题
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/22 22:27 , Processed in 0.181171 second(s), 21 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表