gfreezy / seeker

通过使用 tun 来实现透明代理。实现了类似 surge 增强模式与网关模式。
Apache License 2.0
21 stars 2 forks source link

可能有比较严重的性能瓶颈 #177

Closed imatrixme closed 3 weeks ago

imatrixme commented 3 weeks ago

经不完全测试,对梯子的速度影响较大 我在 DMIT 的机器上搭建trojan-go, 不使用seeker 的情况下的,speedtest 能跑到将近 900Mbps 但只要开启seeker,速度最多到 200Mbps 左右,怎么都上不去,关掉之后又恢复正常

gfreezy commented 3 weeks ago

用的 release 版本吗?

gfreezy commented 3 weeks ago

速度是如何测试的?我怎么可以在本地复现吗?

imatrixme commented 3 weeks ago

速度是如何测试的?我怎么可以在本地复现吗?

用的是release 版本

测试方法比较简单,步骤应该是:

  1. 在不开启seeker 的情况下的,找一个测速网站测一下速(中科院测速网),记下你的网速(A);
  2. 设置一种分流规则,比如访问baidu.com,'DOMAIN-SUFFIX,baiud.com,PROXY', 'MATCH,DIRECT',按理说只有访问百度的时候才会走代理,其他域名请求不受影响,最多影响域名解析的速度。
  3. 开启seeker, 去同一个测速网站上再测一次网速,记下网速 (B);
  4. 再关闭seeker, 再测一次,记下新的网速 (C); 我发现,A 远远大于 B,然后 A ≈ C
gfreezy commented 3 weeks ago

有测试过 clash 的 tun 模式,或者其他的 tun 模式的性能吗?

我本地测试了一下,发现瓶颈在 tun 上。

你是 mac 还是 linux 系统?

gfreezy commented 3 weeks ago

https://github.com/gfreezy/seeker/pull/178

这里优化了一下,现在应该可以跑到 400Mbps ~ 500 Mbps 左右

imatrixme commented 3 weeks ago

有测试过 clash 的 tun 模式,或者其他的 tun 模式的性能吗?

我本地测试了一下,发现瓶颈在 tun 上。

你是 mac 还是 linux 系统?

用的是Mac,M2 mba clash 以前一直开增强模式,偶尔测速,在线路好的情况下可能跑不满,但基本还是接近的。 surge 的增强模式也体验过,损失不大。

imatrixme commented 3 weeks ago

178

这里优化了一下,现在应该可以跑到 400Mbps ~ 500 Mbps 左右

我试试先,非常感谢! 这个程序非常实用,无侵入非常赞,希望越来越完善!

gfreezy commented 3 weeks ago

已经合并了,下载最新版就可以了

imatrixme commented 3 weeks ago

已经合并了,下载最新版就可以了

试了一下,稳定一些了,大概有 20% 的提升。损失还是有点大

gfreezy commented 3 weeks ago

现在可以到多少?

imatrixme commented 2 weeks ago

现在可以到多少?

手机上最高可以达到 180Mbps(之前是 160Mbps), 如果不开seeker,可以达到 280Mbps。手机本身可能也太老了。提升 12.5%+ 电脑上最高可以达到 360Mbps(之前是 200Mbps 左右), 如果不开seeker, 可以达到 870Mbps。提升 40%+

有较大优化,但感觉还有很大空间,损失较多。

不过链接的稳定性大有增强,测速感觉比较平稳。启动时速度爬升比较平缓,到了峰值之后又会回落,最终稳定在峰值的 80% 左右。 之前是忽快忽慢,峰值也不够。

分流用的是Socks5 服务

gfreezy commented 2 weeks ago

研究了一下,现在的实现方式瓶颈在系统调用,需要改成用 苹果的 Network Extension 来实现,改动比较大,短期内应该改不了

imatrixme commented 2 weeks ago

研究了一下,现在的实现方式瓶颈在系统调用,需要改成用 苹果的 Network Extension 来实现,改动比较大,短期内应该改不了

好的,辛苦了。 不过,我是在 VPS 上的 Debian11 上使用的,不是在苹果电脑上部署seeker。

gfreezy commented 1 week ago

https://github.com/gfreezy/seeker/pull/179 优化了 linux 下的性能,现在可以跑满 1G 的网卡。已经发布最新版了。

如果跑不满可以试着改一下这两个参数

queue_number: 2  # 队列数量,linux 有效。至少为 1,queue_number 越大,性能越好。一般 2 就可以跑满 1Gbps 带宽
threads_per_queue: 3  # 每个队列的线程数量,主要工作是处理 tun 数据转发时对数据包进行 checksum 计算。一般 2-3 就可以处理一个 queue 的转发。