cqumirror / feedback

3 stars 2 forks source link

[Misc] 使用 mirrors.cernet.edu.cn/archlinux/ 解析到重庆大学镜像站下载慢的问题 #42

Closed taotieren closed 1 year ago

taotieren commented 1 year ago

使用 mirrors.cernet.edu.cn/archlinux/ 解析到重庆大学镜像站下载慢的问题 详细讨论如下: https://github.com/mirrorz-org/mirrorz/issues/110#issuecomment-1724918722

是重庆大学镜像站做了限速吗?archlinux 默认开启了并发下载,makepkg.conf 设置的 4线程下载也会被封吗? 具体的限制是怎样的呢? 能否设置多线程下载为 4 或 8 呢?

weearc commented 1 year ago

@taotieren 感谢告知,请您提供尽可能详细的网络环境(包括网络服务商,网络类型,geoip等信息),同时打印

tracepath mirrors.cqu.edu.cn

我们将根据以上信息进行研判。

taotieren commented 1 year ago

@taotieren 感谢告知,请您提供尽可能详细的网络环境(包括网络服务商,网络类型,geoip等信息),同时打印

tracepath mirrors.cqu.edu.cn

我们将根据以上信息进行研判。

❯ tracepath mirrors.cqu.edu.cn
 1?: [LOCALHOST]                        0.005ms pmtu 1460
 1:  240e:3b3:600:3b0::1                                   0.397ms 
 1:  240e:3b3:600:3b0::1                                   0.337ms 
 2:  240e:f8:4d::1                                         8.947ms 
 3:  240e:1e:0:29a2::2                                     2.267ms 
 4:  240e:1e:0:103::2                                      1.703ms 
 5:  240e::c:3:5200:703                                    1.512ms 
 6:  240e::e:3:2008:403                                    2.453ms 
 7:  2001:da8:2:754::1                                     3.679ms 
 8:  2001:da8:2:16::2                                     12.084ms 
 9:  2001:da8:2:f::1                                      36.057ms 
10:  2001:da8:2:c::2                                      54.386ms 
11:  2001:da8:2:117::2                                    50.734ms 
12:  2001:da8:b1:ffff::f002                               52.044ms 
13:  cernet2.net                                          51.082ms 
14:  cernet2.net                                          52.980ms 
15:  no reply
16:  no reply
17:  no reply
18:  no reply
19:  no reply
20:  no reply
21:  no reply
22:  no reply
23:  no reply
24:  no reply
25:  no reply
26:  no reply
27:  no reply
28:  no reply
29:  no reply
30:  no reply
     Too many hops: pmtu 1460
     Resume: pmtu 1460 
❯ tracepath mirrors.cqu.edu.cn -4 
 1?: [LOCALHOST]                      pmtu 1492
 1:  _gateway                                              0.241ms 
 1:  _gateway                                              0.231ms 
 2:  _gateway                                              0.211ms pmtu 1460
 2:  119.129.120.1                                         1.317ms 
 3:  121.8.109.97                                          3.579ms 
 4:  no reply
 5:  no reply
 6:  no reply
 7:  101.4.118.154                                        52.247ms asymm 15 
 8:  101.4.114.73                                         47.664ms asymm 14 
 9:  101.4.115.233                                        50.032ms asymm 13 
10:  101.4.117.233                                        49.993ms 
11:  101.4.115.62                                         50.423ms asymm 13 
12:  202.202.216.2                                        47.533ms 
13:  no reply
14:  no reply
15:  no reply
16:  no reply
17:  no reply
18:  no reply
19:  no reply
20:  no reply
21:  no reply
22:  no reply
23:  no reply
24:  no reply
25:  no reply
26:  no reply
27:  no reply
28:  no reply
29:  no reply
30:  no reply
     Too many hops: pmtu 1460
     Resume: pmtu 1460 
taotieren commented 1 year ago

@taotieren 感谢告知,请您提供尽可能详细的网络环境(包括网络服务商,网络类型,geoip等信息),同时打印

tracepath mirrors.cqu.edu.cn

我们将根据以上信息进行研判。

根据上一个问题的反馈,是在广州电信千兆光纤,同时可以使用 IPv4 和 IPv6. 上面是 IPv4 IPv6 测试情况

cyyself commented 1 year ago

使用 mirrors.cernet.edu.cn/archlinux/ 解析到重庆大学镜像站下载慢的问题 详细讨论如下: mirrorz-org/mirrorz#110 (comment)

是重庆大学镜像站做了限速吗?archlinux 默认开启了并发下载,makepkg.conf 设置的 4线程下载也会被封吗? 具体的限制是怎样的呢? 能否设置多线程下载为 4 或 8 呢?

您好,经过研判,您的运营商线路没有问题。我本人也使用手里可以ssh的福建电信千兆家宽线路进行了测试,AS4134到AS23910与您的线路类似,也是在广东华南理工大学处进入。测试IPv6下载arch iso,下行可以到33MB/s。请问您遇到的问题是持续性下行只有1MB/s还是偶发性由于镜像站负载过大导致?

taotieren commented 1 year ago

使用 yay -Syu 进行更新。下载 linux-lts 包时稳定在 1~2MB/s

 yay -S linux-lts{,-headers}
Sync Explicit (2): linux-lts-headers-6.1.54-1, linux-lts-6.1.54-1
警告:linux-lts-6.1.54-1 已经为最新 -- 重新安装警告:linux-lts-headers-6.1.54-1 已经为最新 -- 重新安装正在解析依赖关系...
正在查找软件包冲突...

软件包 (2)              旧版本    新版本    净变化    下载大小  

core/linux-lts          6.1.54-1  6.1.54-1  0.00 MiB  116.24 MiB
core/linux-lts-headers  6.1.54-1  6.1.54-1  0.00 MiB   26.85 MiB

下载大小:      143.10 MiB
全部安装大小:  264.23 MiB
净更新大小:      0.00 MiB

:: 进行安装吗? [Y/n] 
:: 正在获取软件包......
 linux-lts-headers-6.1.54-1-x86_64               26.9 MiB   735 KiB/s 00:37 [##########################################] 100%
 linux-lts-6.1.54-1-x86_64                      116.2 MiB   741 KiB/s 02:41 [##########################################] 100%
 全部 (2/2)                                     143.1 MiB   912 KiB/s 02:41 [##########################################] 100%
(2/2) 正在检查密钥环里的密钥                                                [##########################################] 100%
(2/2) 正在检查软件包完整性                                                  [##########################################] 100%
(2/2) 正在加载软件包文件                                                    [##########################################] 100%
(2/2) 正在检查文件冲突                                                      [##########################################] 100%
(2/2) 正在检查可用存储空间                                                  [##########################################] 100%
:: 正在运行事务前钩子函数...
(1/1) Remove upgraded DKMS modules
==> dkms remove --no-depmod acpi

❯ curl -v mirrors.cernet.edu.cn/archlinux/
*   Trying [2001:250:4:100::2]:80...
* Connected to mirrors.cernet.edu.cn (2001:250:4:100::2) port 80
> GET /archlinux/ HTTP/1.1
> Host: mirrors.cernet.edu.cn
> User-Agent: curl/8.3.0
> Accept: */*
> 
< HTTP/1.1 302 Found
< Server: nginx/1.20.1
< Date: Wed, 20 Sep 2023 12:08:50 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 59
< Connection: keep-alive
< Location: http://mirrors.cqu.edu.cn/archlinux/
< 
<a href="http://mirrors.cqu.edu.cn/archlinux/">Found</a>.

* Connection #0 to host mirrors.cernet.edu.cn left intact
taotieren commented 1 year ago

图片测试 下载 archlinux.iso 同样是维持在 1MB/s 左右

taotieren commented 1 year ago

我尝试了如下 sysctl 的配置后下载速度能稳定有所提升

❯ cat /etc/sysctl.d/90-sysctl.conf 
net.core.netdev_max_backlog = 52428800
net.core.somaxconn = 81920
net.core.optmem_max = 26214400
net.core.rmem_max=26214400
net.core.rmem_default=26214400
net.core.wmem_max=26214400
net.core.wmem_default=26214400
net.ipv4.tcp_rmem = 81920 1048576 2097152
net.ipv4.tcp_wmem = 81920 65536 16777216
net.ipv4.udp_rmem_min = 81920
net.ipv4.udp_wmem_min = 81920
net.ipv4.tcp_max_syn_backlog = 163840
net.ipv4.tcp_max_tw_buckets = 81920
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 300
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_window_scaling = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.ping_group_range = 0 65535
vm.dirty_background_bytes = 52428800
vm.dirty_bytes = 104857600

❯ cat /etc/sysctl.d/90-sysctl-ipv6.conf 
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.autoconf = 1
net.ipv6.neigh.default.gc_thresh1 = 256
net.ipv6.neigh.default.gc_thresh2 = 1024
net.ipv6.neigh.default.gc_thresh3 = 2048
net.ipv6.route.max_size = 8192
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.wlan0.addr_gen_mode=3

❯ cat /etc/sysctl.d/80-bbr.conf 
net.core.default_qdisc=cake
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_fastopen=3

下载测试

❯ wget https://mirrors.cqu.edu.cn/archlinux/iso/latest/archlinux-2023.09.01-x86_64.iso 
--2023-09-21 22:17:54--  https://mirrors.cqu.edu.cn/archlinux/iso/latest/archlinux-2023.09.01-x86_64.iso
已载入 CA 证书“/etc/ssl/certs/ca-certificates.crt”
正在解析主机 mirrors.cqu.edu.cn (mirrors.cqu.edu.cn)... 2001:da8:c800:1021::caca:18c, 202.202.1.140
正在连接 mirrors.cqu.edu.cn (mirrors.cqu.edu.cn)|2001:da8:c800:1021::caca:18c|:443... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK
长度:843395072 (804M) [application/octet-stream]
正在保存至: “archlinux-2023.09.01-x86_64.iso”

archlinux-2023.09.01-x86_64.iso 100%[====================================================>] 804.32M  17.5MB/s  用时 45s     

2023-09-21 22:18:40 (17.9 MB/s) - 已保存 “archlinux-2023.09.01-x86_64.iso” [843395072/843395072])

❯ yay -S linux-lts{,-headers}
Sync Explicit (2): linux-lts-headers-6.1.54-1, linux-lts-6.1.54-1
警告:linux-lts-headers-6.1.54-1 已经为最新 -- 重新安装警告:linux-lts-6.1.54-1 已经为最新 -- 重新安装正在解析依赖关系...
正在查找软件包冲突...

软件包 (2)              旧版本    新版本    净变化    下载大小  

core/linux-lts          6.1.54-1  6.1.54-1  0.00 MiB  116.24 MiB
core/linux-lts-headers  6.1.54-1  6.1.54-1  0.00 MiB   26.85 MiB

下载大小:      143.10 MiB
全部安装大小:  264.23 MiB
净更新大小:      0.00 MiB

:: 进行安装吗? [Y/n] 
:: 正在获取软件包......
 linux-lts-headers-6.1.54-1-x86_64               26.9 MiB  11.9 MiB/s 00:02 [##########################################] 100%
 linux-lts-6.1.54-1-x86_64                      116.2 MiB  20.6 MiB/s 00:06 [##########################################] 100%
 全部 (2/2)                                     143.1 MiB  25.3 MiB/s 00:06 [##########################################] 100%
(2/2) 正在检查密钥环里的密钥                                                [##########################################] 100%
(2/2) 正在检查软件包完整性                                                  [##########################################] 100%
(2/2) 正在加载软件包文件                                                    [##########################################] 100%
(2/2) 正在检查文件冲突                                                      [##########################################] 100%
(2/2) 正在检查可用存储空间                                                  [##########################################] 100%
:: 正在运行事务前钩子函数...
(1/1) Remove upgraded DKMS modules
taotieren commented 1 year ago

经过一段时间的测试发现是net.ipv4.tcp_window_scaling 配置的问题 启用时速度是满速下载

net.ipv4.tcp_window_scaling = 1

禁用时速度在 1˜2MB/s

net.ipv4.tcp_window_scaling = 1

看了下 Arch Wiki 关于这里的解释 6.1 The TCP window scaling problem

最后的调整配置是

net.core.netdev_max_backlog = 52428800
net.core.somaxconn = 81920
net.core.optmem_max = 26214400
net.core.rmem_max=26214400
net.core.rmem_default=26214400
net.core.wmem_max=26214400
net.core.wmem_default=26214400
net.ipv4.tcp_max_syn_backlog = 163840
net.ipv4.tcp_max_tw_buckets = 81920
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 300
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_window_scaling = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.ping_group_range = 0 65535
vm.dirty_background_bytes = 52428800
vm.dirty_bytes = 104857600
weearc commented 1 year ago

@taotieren 大多数情况请保持发行版默认的内核参数,镜像站为同一地区的用户提供均等条件的服务,不对用户行为进行负责。感谢告知故障原因。

cyyself commented 1 year ago

经过一段时间的测试发现是net.ipv4.tcp_window_scaling 配置的问题 启用时速度是满速下载

比较好奇您之前的配置为什么会出现tcp_window_scaling默认关闭的情况,关闭的情况下最大带宽不会超过64KB/RTT,假设您到我们镜像站RTT为50ms,那么关闭的情况下最大带宽只有1.2MB/s。 且观察了Linux主线内核代码 https://github.com/torvalds/linux/blob/v6.6-rc2/net/ipv4/tcp_ipv4.c#L3225 后发现,内核默认配置中该选项也是开启状态。

taotieren commented 1 year ago

经过一段时间的测试发现是net.ipv4.tcp_window_scaling 配置的问题 启用时速度是满速下载

比较好奇您之前的配置为什么会出现tcp_window_scaling默认关闭的情况,关闭的情况下最大带宽不会超过64KB/RTT,假设您到我们镜像站RTT为50ms,那么关闭的情况下最大带宽只有1.2MB/s。 且观察了Linux主线内核代码 https://github.com/torvalds/linux/blob/v6.6-rc2/net/ipv4/tcp_ipv4.c#L3225 后发现,内核默认配置中该选项也是开启状态。

以前是参考 arch wiki 进行配置,使用的是北外的镜像,一直使用正常,最近换成智能镜像前面使用正常后面出现 1~2MB/s 的情况才进行了反馈。 用的是 linux-ck 的内核。