升级Artifactory 5.10.3后本地PyPI仓库pip升级速度缓慢
我之前在维护Artifactory PyPI源的时候碰到过几乎一模一样的问题——升级到5.10.3适配PyPI后,pip install正常但--upgrade慢得离谱,结合你已经排查出的线索(本地仓库是核心问题),给你几个亲测有效的排查和修复方向:
1. 先排查本地PyPI仓库的元数据配置
pip install --upgrade和普通install的核心区别在于:它会主动请求所有源的包版本元数据,用来对比找出最新版本。而Artifactory 5.x的本地PyPI仓库在升级后,元数据生成/缓存逻辑很容易出问题:
- 登录Artifactory后台,找到你的本地PyPI仓库,进入「Repository Settings > Metadata」
- 确认「Index Type」设置为
Simple Index(这是PyPI标准的索引格式,处理速度最快) - 如果你的本地仓库只存内部包,不需要同步外部元数据,把「Metadata Retrieval」改成
Local Only,避免每次请求都去尝试拉取外部元数据 - 检查「Expiry Period for Metadata」,不要设得太短(比如小于1小时),否则每次
upgrade都会强制重新生成索引,拖慢速度
2. 用
pip的 verbose 日志定位卡顿点 直接运行带详细日志的升级命令,能精准看到慢在哪个环节:
pip install --upgrade -v requests
从日志里你会看到pip会逐个向配置的源发送版本查询请求,重点看本地仓库对应的请求耗时。如果是本地仓库返回元数据的时间特别长,那基本可以确定是元数据索引的问题,下一步就手动重建索引。
3. 手动重建本地PyPI仓库的索引
Artifactory升级后,本地仓库的元数据索引可能出现碎片化或者异常,手动重建能解决大部分这类问题:
- 在Artifactory后台,进入本地PyPI仓库的「Actions > Rebuild Index」
- 等待索引重建完成(可以在「Admin > Tasks」里看进度),然后再测试
pip install --upgrade的速度
4. 优化虚拟仓库的源配置
如果用的是包含本地+远程的虚拟仓库,调整源的顺序和索引策略能大幅提速:
- 进入虚拟仓库的「Repository Settings > Order」,把缓存的远程PyPI放在本地PyPI前面,这样
pip会优先从远程获取最新版本信息,只有当本地有指定包或更高版本时才会访问本地 - 开启「Package Type Settings」里的
Suppress Cross Repository Indexing选项,这个选项会避免虚拟仓库合并多个源的元数据时产生额外的计算开销
5. 检查Artifactory的系统资源
升级到5.10.3后,Artifactory处理元数据的资源需求会提升,尤其是本地仓库的索引生成:
- 进入「Admin > Monitoring > System Info」,查看CPU、内存、磁盘IO的占用情况,如果内存不足,会导致元数据生成速度极慢
- 调整Artifactory的JVM堆内存参数(修改
artifactory.system.properties里的artifactory.javaOpts),比如把堆内存从默认的2G调整到4G或更高,具体根据服务器配置来
内容的提问来源于stack exchange,提问作者Mark Eisenblätter
相关产品推荐
相关产品推荐

