-
Notifications
You must be signed in to change notification settings - Fork 106
关于readv
下面讨论可能对小白来说太高深了,小白无视即可,默认配置已经最佳。
内网极限测速时 readv会导致减速
此时要关闭readv,关闭方法:
[app]
noreadv = true
或者命令行参数 -readv=false
具体问题可以参考 https://github.com/e1732a364fed/v2ray_simple/issues/14
同时我也在征集 readv 公网测试数据
https://github.com/e1732a364fed/v2ray_simple/issues/15
大家把自己的测速 发上来,这些数据很重要,可以帮助我优化程序。
目前认为,没必要推出 readv自定义参数功能,因为如果你遇到了readv减速的情况,直接关闭readv就行了,再怎么调也没用,因为这说明你的网太好了
在直连时使用readv是会加速的
就是说纯vless 或者 tls lazy的情况下,就算内网极速测试,readv也是有优化作用的;
目前分析,readv只适用于从远程地址 进行阅读,这样才有加速作用。
而我们如果用于 从 自己的 socks5 读取数据发往vless的话,实际上是效率低下的,不如直接一个大buf
而服务端从远程地址读取数据时 使用readv则是有用的,除非服务端与远程地址离得太近了,近的好像在一个内网里,那样就不够理想。
而客户端到服务端之间的连接,readv则应该是有加速作用的,因为这个连接也是远程的
但是我们极限测速时,实际上是相反的情况,因为在客户端用 websocket 连接 我们的 socks5时,实际上 ws是有掩码处理的,所以 客户端到服务端的buf不需要太大,也就是说分片多或者说延迟是比较大的,所以readv对上传影响不是很大;
而下载时,因为服务器发送websocket时不需要经过掩码处理,直接发送,所以服务器会直接发送超大包,而此时我们服务端接收使用readv的话,就会造成减速效果;因为readv实际上就是不用超大包,而用多个小包
这样思考,就可以与我们实际测速结果中 开启readv后,对下载速度影响很大,但对上传速度却影响很小的情况 相对应。总之就是延迟太低、网速太快导致的。
总之,我们这里要考虑四个节点,自己的客户端浏览器,自己的客户端vs程序,自己的服务端vs程序, 我们要访问的目标网站。
自己的客户端浏览器到自己的客户端vs程序这一段是内网连接,用readv没啥用,可能减速;