如何通过FetchDebian实现高效下载,缩短等待时间?
- 内容介绍
- 文章标签
- 相关推荐
痛点概述
下载慢、等待时间长是大多数 Debian 使用者在使用 FetchDebian 时的首要抱怨。常见原因包括的观点是,
- 默认官方镜像跨区域传输,网络延迟高。
- 带宽受限或公司防火墙阻断。
- APT 缓存未调整,重复下载导致额外耗时。
- 单线程下载无法利用可用带宽。
1️⃣ 选用就近且高速的镜像源
更换国内镜像
编辑 /etc/apt/sources.list 或 /etc/fetchdebian.conf将原有地址替换为国内高速镜像:
# 示例
deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
保存后执行 sudo apt update 使改动生效。
在 FetchDebian 配置文件中指定镜像
/etc/fetchdebian.conf
# 指定镜像
mirror = https://mirrors.ustc.edu.cn/debian/
2️⃣ 多线程并发下载。利用带宽
开启多线程
# 推荐 2‑8 线程,根据实际带宽调节
threads = 4
多线程可以将单个包的下载切分为多个并行连接,明显提高吞吐量。老实说,
使用 aria2 进行外部多线程加速
If you prefer an external downloader。configure APT to use :
# /etc/apt/apt.conf.d/99aria2
Acquire::http::Dl-Limit "0";Acquire::https::Dl-Limit "0";Acquire::Retries "5";Acquire::Queue-Mode "access";Acquire::http { Proxy "";},Acquire::https { Proxy "";},Dir::Bin::Methods {
http "/usr/bin/aria2c -x 8 -s 8 -k 1M";https "/usr/bin/aria2c -x 8 -s 8 -k 1M";},说起来,
3️⃣ 网络层面调整 – 调整 TCP 参数
增大 TCP 窗口大小 & 启用 TCP 校验和卸载
Add following lines to /etc/sysctl.conf,n run sudo sysctl -p.
# 增大接收窗口
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# 启用 TCP 校验和卸载
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_congestion_control = cubic
net.core.netdev_max_backlog = 5000
net.core.somaxconn = 65535
net.core.default_qdisc = fq_codel # 防止拥塞导致的抖动
# 如硬件支持。可开启 checksum offload
ethtool -K eth0 tx off rx off sg off tso off gso off gro off # 示例命令,仅作参考
4️⃣ 在受限网络环境下使用代理加速下载
Socks / HTTP 代理配置示例
# HTTP proxy 示例
proxy_http = http://127.0.0.1:3128
# Socks5 proxy 示例
proxy_socks5 = socks5://127.0.0.1:1080
SSh 隧道或 VPN 的快速上手方式
- SSh 本地转发:ssh -L1080:mirror.example.com:80 user@remote-host -N &
- Lanzou VPN 或 Shadowsocks:确保程序全局代理已生效后再运行 FetchDebian。
5️⃣ APT 缓存与清理 – 减少重复请求
定期清理旧缓存
Apt 缓存大小限制
# /etc/apt/apt.conf.d/95local
APT:这方面,Cache-Limit "100000000";# 限制为约100 MB,可根据硬盘空间调节
再看APT:。Install-Recommends "false";# 减少不必要的依赖拉取
说到APT:,Get::Assume-Yes "true";APT::Get::Show-User-Agent "FetchDebian/1.0";APT::Get::AutomaticRemove "true";
说到Dir:,Cache "/var/cache/apt/";Dir::Cache::archives "/var/cache/apt/archives/";Dir :: State ":: /var/lib/apt/";Dir :: Log ":: /var/log/apt/";Dir :: Log ":: /var/log/dpkg.log";Cache-Start="200M";# 当磁盘剩余低于此值时自动清理 Cache-End="500M";# 达到上限后停止写入新缓存 Cache-Period="30d";# 保留最近30天的包 cache-dir="/var/cache/fetchdebian"; 不过,# 自定义专属缓存方法 cache-max-size="800M";# 上限800 MB cache-cleanup-threshold="600M";# 超过阈值自动删除最旧文件 cache-cleanup-period="7d";# 每周一次自动清理 cache-cleanup-mode="aggressive";# 强制删除不常用包 cache-cleanup-dry-run="false";# 正式执行,不再是演练模式 cache-compression-level=9;# 使用最高压缩率节省空间 cache-use-mmap=true;# 开启内存映射提高读取速度 cache-sync-on-close=true;其实,# 写入后立即同步避免数据丢失 download-retries=5;# 下载失败重试次数 download-timeout=120;# 单次请求最长等待时间 max-concurrent-downloads=6;# 同时进行的最大下载任务数 max-download-speed=10M;# 限制每个任务最高速率,防止占满带宽 parallel-downloads=6;# 启用并行下载模块 prefetch-enabled=true;# 开启预取功能提前加载资源 prefetch-cache-size=200M;说起来,# 为预取分配的缓存空间大小 prefetch-max-connections=6;# 同时预取的最大连接数 prefetch-timeout=30;# 超时后放弃预取请求 retry-backoff-factor=1.5;# 重试间隔指数回退系数 retry-max-delay=30 # 重试间隔上限 keep-alive=true # 持久连接保持活跃 keep-alive-timeout=15 # 持久连接空闲超时时间 max-pipeline-length=10 # 单连接流水线最大深度 pipeline-timeout=20 # 流水线超时时间 pipeline-retry-count=4 # 流水线失败重试次数 pipeline-chunk-size=64k # 每个块的大小 pipeline-buffer-size=256k # 缓冲区总容量 pipeline-window-size=128k # 窗口大小控制流量 pipeline-throttle-rate=500k # 限流阈值 use-proxy=false proxy=http://127.0.0.1:3128 proxy-socks5=socks5://127.0.0.1:1080 proxy-no-direct=false no-proxy="" acquire-retries='5' acquire-timeout='60' debug-level='quiet' DebugLevel 'quiet';DebugLevel 'verbose';DebugLevel 'info';DebugLevel 'error';debuglevel='verbose';debuglevel='quiet';debuglevel='error';按理说,debuglevel='info';nocache;noautoupdate;autoupdate;nodownload;downloadonly;forcedownload;dryrun;updateonly;skipupgrades;
Use this configuration file in conjunction with fetchdebian command-line options.
Download source list:
-f........?
**.
SENT.
This is...
--- End of answer ---
痛点概述
下载慢、等待时间长是大多数 Debian 使用者在使用 FetchDebian 时的首要抱怨。常见原因包括的观点是,
- 默认官方镜像跨区域传输,网络延迟高。
- 带宽受限或公司防火墙阻断。
- APT 缓存未调整,重复下载导致额外耗时。
- 单线程下载无法利用可用带宽。
1️⃣ 选用就近且高速的镜像源
更换国内镜像
编辑 /etc/apt/sources.list 或 /etc/fetchdebian.conf将原有地址替换为国内高速镜像:
# 示例
deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
保存后执行 sudo apt update 使改动生效。
在 FetchDebian 配置文件中指定镜像
/etc/fetchdebian.conf
# 指定镜像
mirror = https://mirrors.ustc.edu.cn/debian/
2️⃣ 多线程并发下载。利用带宽
开启多线程
# 推荐 2‑8 线程,根据实际带宽调节
threads = 4
多线程可以将单个包的下载切分为多个并行连接,明显提高吞吐量。老实说,
使用 aria2 进行外部多线程加速
If you prefer an external downloader。configure APT to use :
# /etc/apt/apt.conf.d/99aria2
Acquire::http::Dl-Limit "0";Acquire::https::Dl-Limit "0";Acquire::Retries "5";Acquire::Queue-Mode "access";Acquire::http { Proxy "";},Acquire::https { Proxy "";},Dir::Bin::Methods {
http "/usr/bin/aria2c -x 8 -s 8 -k 1M";https "/usr/bin/aria2c -x 8 -s 8 -k 1M";},说起来,
3️⃣ 网络层面调整 – 调整 TCP 参数
增大 TCP 窗口大小 & 启用 TCP 校验和卸载
Add following lines to /etc/sysctl.conf,n run sudo sysctl -p.
# 增大接收窗口
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# 启用 TCP 校验和卸载
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_congestion_control = cubic
net.core.netdev_max_backlog = 5000
net.core.somaxconn = 65535
net.core.default_qdisc = fq_codel # 防止拥塞导致的抖动
# 如硬件支持。可开启 checksum offload
ethtool -K eth0 tx off rx off sg off tso off gso off gro off # 示例命令,仅作参考
4️⃣ 在受限网络环境下使用代理加速下载
Socks / HTTP 代理配置示例
# HTTP proxy 示例
proxy_http = http://127.0.0.1:3128
# Socks5 proxy 示例
proxy_socks5 = socks5://127.0.0.1:1080
SSh 隧道或 VPN 的快速上手方式
- SSh 本地转发:ssh -L1080:mirror.example.com:80 user@remote-host -N &
- Lanzou VPN 或 Shadowsocks:确保程序全局代理已生效后再运行 FetchDebian。
5️⃣ APT 缓存与清理 – 减少重复请求
定期清理旧缓存
Apt 缓存大小限制
# /etc/apt/apt.conf.d/95local
APT:这方面,Cache-Limit "100000000";# 限制为约100 MB,可根据硬盘空间调节
再看APT:。Install-Recommends "false";# 减少不必要的依赖拉取
说到APT:,Get::Assume-Yes "true";APT::Get::Show-User-Agent "FetchDebian/1.0";APT::Get::AutomaticRemove "true";
说到Dir:,Cache "/var/cache/apt/";Dir::Cache::archives "/var/cache/apt/archives/";Dir :: State ":: /var/lib/apt/";Dir :: Log ":: /var/log/apt/";Dir :: Log ":: /var/log/dpkg.log";Cache-Start="200M";# 当磁盘剩余低于此值时自动清理 Cache-End="500M";# 达到上限后停止写入新缓存 Cache-Period="30d";# 保留最近30天的包 cache-dir="/var/cache/fetchdebian"; 不过,# 自定义专属缓存方法 cache-max-size="800M";# 上限800 MB cache-cleanup-threshold="600M";# 超过阈值自动删除最旧文件 cache-cleanup-period="7d";# 每周一次自动清理 cache-cleanup-mode="aggressive";# 强制删除不常用包 cache-cleanup-dry-run="false";# 正式执行,不再是演练模式 cache-compression-level=9;# 使用最高压缩率节省空间 cache-use-mmap=true;# 开启内存映射提高读取速度 cache-sync-on-close=true;其实,# 写入后立即同步避免数据丢失 download-retries=5;# 下载失败重试次数 download-timeout=120;# 单次请求最长等待时间 max-concurrent-downloads=6;# 同时进行的最大下载任务数 max-download-speed=10M;# 限制每个任务最高速率,防止占满带宽 parallel-downloads=6;# 启用并行下载模块 prefetch-enabled=true;# 开启预取功能提前加载资源 prefetch-cache-size=200M;说起来,# 为预取分配的缓存空间大小 prefetch-max-connections=6;# 同时预取的最大连接数 prefetch-timeout=30;# 超时后放弃预取请求 retry-backoff-factor=1.5;# 重试间隔指数回退系数 retry-max-delay=30 # 重试间隔上限 keep-alive=true # 持久连接保持活跃 keep-alive-timeout=15 # 持久连接空闲超时时间 max-pipeline-length=10 # 单连接流水线最大深度 pipeline-timeout=20 # 流水线超时时间 pipeline-retry-count=4 # 流水线失败重试次数 pipeline-chunk-size=64k # 每个块的大小 pipeline-buffer-size=256k # 缓冲区总容量 pipeline-window-size=128k # 窗口大小控制流量 pipeline-throttle-rate=500k # 限流阈值 use-proxy=false proxy=http://127.0.0.1:3128 proxy-socks5=socks5://127.0.0.1:1080 proxy-no-direct=false no-proxy="" acquire-retries='5' acquire-timeout='60' debug-level='quiet' DebugLevel 'quiet';DebugLevel 'verbose';DebugLevel 'info';DebugLevel 'error';debuglevel='verbose';debuglevel='quiet';debuglevel='error';按理说,debuglevel='info';nocache;noautoupdate;autoupdate;nodownload;downloadonly;forcedownload;dryrun;updateonly;skipupgrades;
Use this configuration file in conjunction with fetchdebian command-line options.
Download source list:
-f........?
**.
SENT.
This is...
--- End of answer ---

