coyove / goflyway

An encrypted HTTP server
MIT License
4.31k stars 655 forks source link

下载大文件出现断流现象 #51

Open raddyfiy opened 6 years ago

raddyfiy commented 6 years ago

下载时会出现速度突然变为0的情况,变为0后浏览器也无法走代理,就是“假死”状态。虽然解决办法是停掉下载器等一分钟就能自动恢复,但因为出现频率较高,几乎每个文件下载时都有至少一次的断流,有什么方法可以解决,估计把tcpdeadline设成0?软件支持这么做吗? 服务端:centos6和Ubuntu14均有 版本:releast 1.1.0(linux64位) 客户端:windows 10 64位 服务端运行指令:nohup ./goflyway -k="密码" -l=":8100" > /tmp/goflyway.log 2>&1 & 客户端指令:goflyway.exe -k="密码" -up="服务器:端口" -l=":8100" pause>nul 下载软件:IDM(8线程16线程均发生,其他的没试) 文件大小:4G左右 tips:下载文件时同时用浏览器走代理上网更容易发生此情况

coyove commented 6 years ago

请在服务端和客户端使用-lv dbg输出一下更详细的日志。

同时在假死的时候,先尝试启动一个新客户端连接同一个服务端,观察其是否工作正常。

raddyfiy commented 6 years ago

已重现成功,日志:链接:https://pan.baidu.com/s/1dGWVrNz 密码:3ytz 整个过程:正常下载->第一次假死->一会儿自动恢复正常->用浏览器浏览网页->第二次假死->关掉客户端重新打开假死依旧->在浏览器里刷新网页,网页打不开但假死依旧,相比第一次假死持续很长时间->关掉浏览器->一会儿自动恢复正常。每一过程的日志按此时间顺序已排好,日志里还包括了服务端和客户端的总日志。 tips:第二次假死时想要再开个客户端(换个本地端口),但是不允许,因为第一个客户端已经占用了web控制台的端口,导致第二个客户端无法打开。而且web控制台的端口无法更换,只能将已有客户端关闭再打开。幸好重开结果说明问题不在客户端。

coyove commented 6 years ago

日志里出现大量Connection reset by peer错误,也就是连接重置。这个有点类似墙的行为。在出现假死的时候立即试着登陆vps,是否可以? web控制台的端口使用-web-port=N设置

raddyfiy commented 6 years ago

目前暂时还无法测试,因为之前那段时间下载速度是达到满宽带(100M宽带),才有断流的问题,之后这几天速度变得比较慢,也没有了断流的问题。我也尝试让速度恢复以前,但没什么进展,就好像某个未知的因素对“单个线程”做了限速,服务器与我的电脑传输的总速度没有变。但肯定的是,之前断流发生时服务器可以用ssh工具正常登录,并且敲命令时无影响。

coyove commented 6 years ago

两种尝试的思路:(出现断流时)

  1. 立刻停掉服务端,改用其他程序(如http服务器)监听同一端口,观察端口是否正常工作
  2. 在vps上启动一个本地客户端连接服务端,再利用curl等工具使用这个代理在vps上访问任意网站,观察是否正常工作