Lafeng / deblocus

An Excellent Proxy.
MIT License
185 stars 42 forks source link

关于并行tunnel的疑惑 #40

Closed NoahArkc closed 8 years ago

NoahArkc commented 8 years ago

能否问下,配置文件中并行tunnel数量,如果设置得更大,具体意味着什么?(不太看的懂go)

我看到“TCP multiplexing inside tunnel”,所以是指连接会被并行的通过多个客户端和服务端之间的连接进行传输吗?

这样的话,默认是2个连接并行?连接是持续的?

vickery commented 8 years ago

deblocus使用复用tcp连接方法来提升感知体验,简单讲就是把客户端app发出的代理请求(可能是1个或者1000个)反复利用deblocus c/s之间的多条通道(可能是2个或者更多)来进行传输,也就是wiki首页的图例中的样子。 Parallels参数就是用来指定c/s之间物理连接的数量,比如2个用户向c端发起代理请求,如果有2个物理连接,deblocus将会分配2个用户的请求到2个连接上并行传输,如果有1个物理连接,那么deblocus将会把2个用户的请求按小分包排队在1个连接上传输,这类似于操作系统多个进程线程需要执行时需要落实在具体的CPU核心上执行是一样的。 而c/s之间使用多少个物理连接,这要视应用情况而定,如果客户端需要供应多人多程序的代理服务,或者单线程下载方式上难以获得接近全带宽的吞吐,那么应该增大这个物理连接数,而通常情况,一两个人小规模使用,默认的2基本上可以满足,太多了通常会有很多的连接处于闲置状态这是一种浪费,太少了可能会小幅度影响吞吐,但总的来说,无论多少个连接,单位时间能获得传输量不会超过链路的物理带宽。

NoahArkc commented 8 years ago

原来如此。非常感谢。

请问C/S之间的物理连接是无论是否使用,一直持续不改变的吗?因为在服务器丢包比较严重的情况下连接总是会一点一点的慢下来(或者说最初时特别快),所以对此感到困扰。

2016-03-04 16:18 GMT+08:00 Vickery notifications@github.com:

deblocus使用复用tcp连接方法来提升感知体验,简单讲就是把客户端app发出的代理请求(可能是1个或者1000个)反复利用deblocus c/s之间的多条通道(可能是2个或者更多)来进行传输,也就是wiki首页的图例中的样子。

Parallels参数就是用来指定c/s之间物理连接的数量,比如2个用户向c端发起代理请求,如果有2个物理连接,deblocus将会分配2个用户的请求到2个连接上并行传输,如果有1个物理连接,那么deblocus将会把2个用户的请求按小分包排队在1个连接上传输,这类似于操作系统多个进程线程需要执行时需要落实在具体的CPU核心上执行是一样的。

而c/s之间使用多少个物理连接,这要视应用情况而定,如果客户端需要供应多人多程序的代理服务,或者单线程下载方式上难以获得接近全带宽的吞吐,那么应该增大这个物理连接数,而通常情况,一两个人小规模使用,默认的2基本上可以满足,太多了通常会有很多的连接处于闲置状态这是一种浪费,太少了可能会小幅度影响吞吐,但总的来说,无论多少个连接,单位时间能获得传输量不会超过链路的物理带宽。

— Reply to this email directly or view it on GitHub https://github.com/Lafeng/deblocus/issues/40#issuecomment-192178445.

vickery commented 8 years ago

"一直持续不改变的吗"没有看懂? tcp如何处理丢包重传这是应用层无关属于Kernel的事情,我们能做的就是避免我们的应用层增加延迟、降低性能,deblocus可以算作代理类应用中首屈一指的高性能,尤其是在传输和加密方面。 某些场景的tcp问题,应该更多的关注kernel参数调整或其它工具,再或者不使用tcp传输。

NoahArkc commented 8 years ago

我的意思是,如果连接数量少,没有被使用,连接是一直开着的?

TCP的事情明白您的意思了。

Best regards,

Sincerely, Noah

2016-03-04 22:18 GMT+08:00 Vickery notifications@github.com:

"一直持续不改变的吗"没有看懂?

tcp如何处理丢包重传这是应用层无关属于Kernel的事情,我们能做的就是避免我们的应用层增加延迟、降低性能,deblocus可以算作代理类应用中首屈一指的高性能,尤其是在传输和加密方面。 某些场景的tcp问题,应该更多的关注kernel参数调整或其它工具,再或者不使用tcp传输。

— Reply to this email directly or view it on GitHub https://github.com/Lafeng/deblocus/issues/40#issuecomment-192298509.

vickery commented 8 years ago

物理连接是一直保持的。

NoahArkc commented 8 years ago

明白了,谢谢!

Best regards,

Sincerely, Noah

On Sat, Mar 5, 2016 at 3:02 PM, Vickery notifications@github.com wrote:

物理连接是一直保持的。

— Reply to this email directly or view it on GitHub https://github.com/Lafeng/deblocus/issues/40#issuecomment-192599568.