Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用Naiveproxy测速时无法得到理想的网络性能。 #122

Closed
felixding opened this issue Sep 6, 2020 · 9 comments
Closed

使用Naiveproxy测速时无法得到理想的网络性能。 #122

felixding opened this issue Sep 6, 2020 · 9 comments

Comments

@felixding
Copy link

理论上说Naiveproxy应该有非常好的网络性能,至少和其它代理软件处于同一水平。但测试结果却相差很大,不知道是哪里出了问题。

测试设置如下:

  • Naiveproxy v85.0.4183.83-2,v2ray 4.25.1
  • 服务器为Ubuntu 18.04 x64。Naiveproxy使用go 1.14.8编译,用caddy2+forwardproxy。v2ray放在了Nginx后面,用了WebSocket via TLS+Vmess协议
  • 客户端为Mac OS 10.15.6,Naiveproxy和v2ray均使用命令行程序

测试结果如下:

v2ray:

v2ray-tokyo-sg

Naiveproxy:

naive-tokyo-sg

同一时间段反复切换测试,均得到基本一致的结果。请问可能是什么问题?

@darhwa
Copy link

darhwa commented Sep 6, 2020

图上 Connections 下面显示 Multi,估计是这个原因。

naive 是多路复用的,而 v2ray 是 1:1 的连接模型。这样测出来 naive 显示的是你家到 vps 单个连接的带宽,v2ray 则是多个连接的总带宽。

@klzgrad
Copy link
Owner

klzgrad commented Sep 6, 2020

我没有认真去在性能上优化,如果性能好也只是偶然。

为了重现你这个,我手搭了一个Caddy前端的V2ray。测得二者单连接的网速性能是一样的,所以跟上面推测是一样的。

Naive在设计理念上是沿袭HTTP/2,认为应该把单连接用好,而不是多连接去不公平竞争带宽。因此在实际网络环境中,在性能上要比多连接劣势。Naive里面有多连接的选项,但我不会告诉你。

除此之外CPU占用率我也看了一眼,CPU还不是网速瓶颈,只有相对意义

  • 客户端:Naive 22%, V2ray 45%
  • 服务端:Caddy(naive) 10%, Caddy+V2ray 5+10%

@felixding
Copy link
Author

明白了。请问有计划优化吗?

@fbion
Copy link
Contributor

fbion commented Sep 7, 2020

学习了

@klzgrad klzgrad closed this as completed Sep 8, 2020
Repository owner deleted a comment from emiyalee1005 Oct 1, 2020
Repository owner deleted a comment from fbion Oct 1, 2020
Repository owner deleted a comment from dongxinb Oct 1, 2020
Repository owner deleted a comment from XueshiQiao Oct 1, 2020
@klzgrad klzgrad reopened this Oct 3, 2020
@klzgrad
Copy link
Owner

klzgrad commented Oct 3, 2020

我把concurrency参数的上限删除了,然后设为8,然后测得这个数字。但意义不大,因为单连接性能还是很慢。

删除上限的原因是几个月前电信单连接的限速还是10MB/s,现在变成6MB/s了,竟然使用8个连接才能把水管充满。

我使用kcptun测速“单连接”可以达到20MB/s,而且限速的原因是服务器CPU满了。这里的确有一些对抗限速的空间。

@felixding
Copy link
Author

你那里UDP不会遇到运营商的限制吗?

我曾经用TCP PCC的用户空间程序获得非常惊人的下载带宽,它对网络的提速效果是如此显著,以至于我甚至不得不通过确认网卡的流量来验证它的速度。当时BBR还没有发布,可惜后来作者去搞区块链了。

我看了很多TCP拥塞控制协议,基本上都只在服务器端做文章,而完全放弃客户端,这当然是正常的,但是对于Naive或类似的软件,因为两边都是自己控制,如果直接集成拥塞控制是不是会有更好的效果?

@klzgrad
Copy link
Owner

klzgrad commented Oct 4, 2020

浏览器访问一个H/2站点不会使用多连接

@klzgrad klzgrad closed this as completed Oct 9, 2020
@oit63
Copy link

oit63 commented Jun 7, 2023

如klzgrad说的,concurrency最好就保持1,可搭配haproxy做负载均衡配多个节点提速

@klzgrad
Copy link
Owner

klzgrad commented Aug 18, 2024

Duplicate of #122

测得因为HTTP/2设置的原因导致单连接限速

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants