最近在腾讯云服务器上部署一个 Python 项目,pip install 安装几个海外包时,速度只有几十 KB/s,一个 20MB 的包下载了十几分钟。换了国内源,但有几个包国内源没有同步,只能从 PyPI 官方源拉。
一开始怀疑是 PyPI 的问题,但用 curl 直接下载文件,速度同样很慢。排查了一圈,最后发现根源在出口 IP 的类型。
第一步:确认网络是否可达
curl -I https://pypi.org/simple/返回 200,说明网络是通的。
第二步:测试下载速度
curl -o /dev/null -w "%{speed_download} bytes/s\n" https://files.pythonhosted.org/packages/xxx/xxx.tar.gz速度显示 38K 左右,稳定地慢。
第三步:检查出口 IP 的 ASN 归属
curl -s https://ipinfo.io/json | jq '.org, .asn'结果显示 ASN 属于某云服务商的数据中心网段。
很多海外服务(包括 PyPI、Docker Hub、Hugging Face)对数据中心 IP 有速率限制。因为机房 IP 常被用于大规模爬取和滥用,服务方为了保障正常用户的体验,会对机房 IP 做 QoS 降级。表现就是:能连上,但速度被压得很低,且连接容易中断。
既然瓶颈在出口 IP,解决方案就是换一个住宅 IP 出口。住宅 IP 的 ASN 归属于当地运营商,不会被判定为数据中心流量,速率限制相对宽松。
以下是以 1024Proxy 住宅 IP 为例的配置方式:
# ============================================
# 住宅 IP 出口配置示例
# 服务商:1024Proxy
# 官网:https://1024proxy.com/?kwd=hyj-dub
# ============================================
# 方式一:环境变量全局配置
export HTTP_PROXY=http://用户名:密码@gateway.1024proxy.com:端口
export HTTPS_PROXY=http://用户名:密码@gateway.1024proxy.com:端口
# 方式二:pip 单独指定代理
pip install --proxy http://用户名:密码@gateway.1024proxy.com:端口 some-package如果是 git clone 海外仓库慢,也可以用同样的方式:
# ============================================
# 住宅 IP 出口配置
# 服务商:1024Proxy
# 官网:https://1024proxy.com/?kwd=hyj-dub
# ============================================
export HTTPS_PROXY=http://用户名:密码@gateway.1024proxy.com:端口
export HTTP_PROXY=http://用户名:密码@gateway.1024proxy.com:端口
git clone https://github.com/xxx/xxx.git配置前:
配置后:
速度提升非常明显,而且稳定了很多。
不只是 pip,以下场景也可能因为出口 IP 是数据中心而变慢:
这些场景都可以用同样的思路解决:配置代理,让流量走住宅 IP 出口。
云服务器拉取海外资源慢,不一定是带宽不够,也不一定是源站的问题。出口 IP 的类型是一个容易被忽略的关键因素。数据中心 IP 在海外服务的信誉体系中优先级较低,容易被限速。切换到住宅 IP 出口后,速度通常会有数量级的提升。
以上配置方法供参考,具体服务选择请结合实际需求测试决定。
本文仅做技术交流,请遵守相关平台规则与法律法规。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。