在关闭Frp的tcp mux 后上传才正常持续,之前是小文件可以秒传卡100%,大就传一下等待一会儿就报错Network Error(仅使用Frp进行端口转发的情况下)如果再加上Nginx进行反向代理没有写明超时时间,默认60s就更完蛋了,给你报405/502/504等一串错误。
HK 大陆3网直连 200Mbps的VPS做转发,一个30MB的文件1MB分片已经传了十几分钟了,真的逆天啊我很难想想这性能瓶颈到哪里了,哪怕作为下载方的家宽服务器现在也有100Mbps下行,我本地直接5G流量居然还是这么龟速。 纯纯逆天。
折腾这个玩意真的让我力竭了,当然力竭的倒霉蛋也不只我一个,互联网上随手就能搜到类似的问题,而且最终说是解决的实际和没解决也区别不大,依旧是慢如蜗牛。

先来谈谈Frp TCP多路复用的逆天降速问题

看个帖子:tcpmux 会大幅降低链路速度#2987
看完你应该大致明白发生了啥,总之开发者们选择了稳定性,但是这在我的应用场景就很糟糕。
所以我最终选择了关闭TCP MUX。

Nginx 反代对Cloudreve的影响

首先,我刚才提过Nginx对前后端的默认的连接超时都是60s一超时就给前端返回504,所以你要么60s内传完,要么保障断开连接后自动重连。
当然,我们还有个更具备实操价值的办法😉:

  location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host; 
        proxy_redirect off;
        proxy_pass http://127.0.0.1:5212;  
        proxy_request_buffering off; # 禁用反向代理缓存
        proxy_read_timeout 3600s;   # 等待后端响应超时
        proxy_send_timeout 3600s;   # 发送请求体给后端
        client_body_timeout 3600s;  # 接收客户端请求体
        send_timeout 3600s;         # 发送响应给客户端

        client_max_body_size 0;     # 0 表示不限制请求体大小
    }

分片大小

在带宽足够的情况下,为了充分吃满带宽分片大小应该尽可能的大以提高[所求数据传输时间/协议开销时间]的值,拆分成小块发送意味着花费更多的时间在协议开销上。具体大小应该根据你自己的各级服务器带宽决定,如果带宽本身就很低或者波动明显,就适当调小维持稳定上传状态。
对于我的200Mbps上行的Frps和30上/100Mbps下的Frpc 我选择的分片大小是16MB。

Frps与Frpc 之间的协议效率

在理想的情况下,QUIC一定是最好的选择,如果网络波动明显只能退选KCP。但是考虑到实践中某些运营商对UDP流量极端的QoS策略,我只能选择TCP和基于TCP的协议。
在某些特殊环境下,开启流量加密是你不得不做的选择,但是如无必要加密和压缩两个都没有必要开,特别是设备cpu性能明显羸弱的情况下,开启流量压缩没有任何意义。

最后,看看更接近操作系统底层的地方

Linux之TCPIP内核参数优化

懒人方案:决定24H不睡迎接中秋节——顺便修一修linuxuser.site邮件服务器的严重不可用问题

标签: none

添加新评论