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

下载速度最多 3MB/s 的问题 #50

Open
Pandaft opened this issue Jul 8, 2021 · 10 comments
Open

下载速度最多 3MB/s 的问题 #50

Pandaft opened this issue Jul 8, 2021 · 10 comments

Comments

@Pandaft
Copy link

Pandaft commented Jul 8, 2021

#47 这个问题在我这也出现了。

我的账号是 SVIP4 ,无论用手机官方 App 还是 pc 端都可以满速下载,宽带能跑满 11MB/s ,手机 5G 实测可以跑到 80+MB/s ,因此可推断账号是没有黑号的。

我在 Win10 上运行 BaiduPCS-Py 无论如何都是最多只有 3MB/s,也尝试了提高线程数和减小分块大小,但都没有用。楼上提到换 Linux 可以满速,但我在虚拟机 Linux 中运行 BaiduPCS-Py 实测还是一样。

但上述操作中,Win10 和 Linux 中使用的网络环境和账号都是相同的,因此我在 Win10 和 Linux 中分别测试了 电信 100Mbps 和 移动 300Mbps,但结果都是不超过 3MB/s。看起来似乎和网络没有关系。

我想换个账号试试但我没有其他的 SVIP 账号,但我注意到 github 上的另外一个项目 BaiduPCS-Go 。我在 Win10 和 Linux 上分别运行那个程序,都能达到 10MB/s,只不过有点波动,我只用了 电信 100Mbps 网络测试,如果用更快的网络也许还会超过 10MB/s。

同一个账号,同一个硬件环境,同一个网络环境,但不同的程序,我觉得是 BaiduPCS-Py 的问题(没有批判的意思,这个项目对我帮助很大,所以我才来提 issue 希望能帮助改进)。

我注意到 BaiduPCS-Py 和 BaiduPCS-Go 的登陆方式不一样,前者是使用者自行在网页版获取 BDUSS 和 cookies ;后者是使用者输入账号和密码,程序模拟登陆后获取登录信息。不知道问题是否跟这个有关?

@PeterDing
Copy link
Owner

PeterDing commented Jul 8, 2021

感谢反馈。

可否能贴出你上面测试用的具体命令(文件名用 abc 代替就可)和测试环境,包括 BaiduPCS-Py 和 与之对比的 BaiduPCS-Go 命令。
这样我可以检测什么地方出了问题。

@Pandaft
Copy link
Author

Pandaft commented Jul 8, 2021

BaiduPCS-Go 默认分块大小是 64 KB

D:\BaiduPCS-Go d --save /4k.mp4

[0] 提示: 当前下载最大并发量为: 8, 下载缓存为: 65536
[1] 加入下载队列: /4K.mp4

[1] ----
类型 文件
文件路径 /4K.mp4
文件名称 4K.mp4
文件大小 493295519, 470.443267MB
md5 (可能不正确) 155ad5260hd9c983632f3fea8723fff0
app_id 250528
fs_id 1004526498096982
创建日期 2020-05-09 22:25:29
修改日期 2021-07-08 11:45:15

[1] 准备下载: /4K.mp4
[1] 将会下载到路径: 4K.mp4

[1] ↓ 213.81MB/470.44MB 10.86MB/s in 21s, left 23s ............

默认参数下载:

D:\>BaiduPCS-Py d /4k.mp4
⠇ 4k.mp4.tmp -- ------------------------------------- 6.2% • 30.5/493.3 MB • 3.0 MB/s • 0:02:36

提高线程数、减小分块大小:

D:\>BaiduPCS-Py d -s 10 -k 500k /4k.mp4
⠦ 4k.mp4.tmp - -------------------------------------- 2.9% • 14.3/493.3 MB • 1.9 MB/s • 0:04:09

进一步提高线程数、减小分块大小至与 BaiduPCS-Go 相等:

D:>BaiduPCS-Py d -s 20 -k 64k /4k.mp4
⠹ 4k.mp4.tmp ---------------------------------------- 0.4% • 1.9/493.3 MB • 315.1 kB/s • 0:26:00

意外的是我发现如果增加分块大小,速度提上去了,在 5-8MB/s 之间波动:

D:\>BaiduPCS-Py d -s 20 -k 5120k /4k.mp4
⠏ 4k.mp4.tmp --------------- ------------------------ 38.3% • 188.7/493.3 MB • 8.2 MB/s • 0:00:38

提高线程数,没有改善:

D:\>BaiduPCS-Py d -s 30 -k 5120k /4k.mp4
⠧ 4k.mp4.tmp ------ --------------------------------- 15.9% • 78.6/493.3 MB • 8.2 MB/s • 0:00:51

减少线程数,没有改善

D:\>BaiduPCS-Py d -s 5 -k 5120k /4k.mp4
⠦ 4k.mp4.tmp --------- ------------------------------ 24.4% • 120.6/493.3 MB • 8.2 MB/s • 0:00:46

不改线程数、增大分块大小,前期速度波动在 6-10MB/s,后期稳定在 2MB/s:

D:\>BaiduPCS-Py d -s 20 -k 10240k /4k.mp4
⠧ 4k.mp4.tmp ---------------------------------- ----- 87.1% • 429.8/493.3 MB • 1.8 MB/s • 0:00:36

我现在换到移动 300Mbps 网络试试……

@Pandaft
Copy link
Author

Pandaft commented Jul 8, 2021

移动 300Mbps 网络:

前期 10-20MB/s 波动,后期 1-5MB/s 波动:

D:\>BaiduPCS-Py d -s 20 -k 10240k /8k.mp4
⠋ 8k.mp4.tmp ---------------- ----------------------- 42.2% • 419.4/995.0 MB • 21.8 MB/s • 0:00:27

将线程数改为 1 ,结果和上面相同:

D:\>BaiduPCS-Py d -s 1 -k 10240k /8k.mp4
⠋ 8k.mp4.tmp ------------------- -------------------- 47.8% • 475.5/995.0 MB • 1.3 MB/s • 0:06:52

将分块大小提高至30MB,速率在 20-30MB/s 波动:

D:\>BaiduPCS-Py d -s 1 -k 30720k /8k.mp4
⠹ 8k.mp4.tmp ----------------- ---------------------- 44.6% • 443.4/995.0 MB • 33.0 MB/s • 0:00:17
用上面这条命令实测用时 103s,平均 9.6MB/s,中间网速波动很大,一时很快(30+MB/s),一时很慢(1MB/s)。
我在手机APP中下载实测用了 35s,平均 33.1 MB/s,网速波动很小。

不过这个速度也很满意了,感谢!

@Pandaft
Copy link
Author

Pandaft commented Jul 8, 2021

忘了说环境都是Win10专业版,性能应该不是瓶颈,R7 4800H 3060 24G内存 500G SSD(sn550)

@PeterDing
Copy link
Owner

抱歉,是我没把文档写清楚。

对于下载命令 d,如果不加 -d 来指定下载器,都是默认使用 me 下载器。所有你以上使用的命令都是用 me 下载器。me 下载器只使用一个连接下载,并发选项 -s 是指同时并发下载文件的数量,而不是下载一个文件使用的连接数量。所以你上面的命令都只使用了一个连接来下载文件,而 BaiduPCS-Go 是使用了8个连接来同时下载一个文件。我想 App 也是一样的。

如果想对一个文件同时使用多个连接同时下载,你需要指定下载器为 aget_pyaget_rs,前者默认安装,后者需要手动安装。

对于 svip 帐号,-k 设置为 40m ~ 50m 比较好,如果带宽跑不满,可以增加 -s 并发值。
比如,你可以试试下面的命令,应该可以跑满带宽:

BaiduPCS-Py d /abc -d aget_py -s 10 -k 50m

@Pandaft
Copy link
Author

Pandaft commented Jul 8, 2021

原来如此,十分感谢!!!

是我没认真看文档,这次尝试了你给的那条命令,下载单文件 995MB 只用了 35s,平均速度 28.4MB/s,快太多了。

@PeterDing
Copy link
Owner

-s 一般设为 5,太大可能有被封的风险。

@Pandaft
Copy link
Author

Pandaft commented Jul 8, 2021

好的,不过我还有几个问题:

  1. BaiduPCS-Py 计算文件大小是除以 1000,这是正常的吗(上面的 995MB 实际是 995,043,234 字节,除 1024 再除 1024 的话是 948MB 和 Win10 显示一致)

  2. 使用 aget_py 下载器后不显示进度和速度了,一直都是 0% 和 0MB/s,但实际是正常下载的。

  3. 这个是我个人的问题,买个欧美地区的 1Gbps 大带宽 vps 运行此项目可以实现高速下载吗?我在手机上挂梯子如果选用香港节点貌似下载不了文件,但是美国的节点能正常下载文件,只不过不是很快。

@PeterDing
Copy link
Owner

  1. 这是个 bug,会在下个版本修复。
  2. 不显示进度和速度是 aget_py 设计问题,它要下载完一个 -k 的大小的块才会更新进度。
    最近不会修复这个问题。如果你在意这个问题,可以换用 aget_rs 试试,它的进度显示是正常的。
  3. 用国外的服务器只会减慢下载速度。毕竟数据要绕去国外再转回来。

@Pandaft
Copy link
Author

Pandaft commented Jul 8, 2021

好的,感谢耐心解答!

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

2 participants