You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory 4.12.2下载构件速度过慢问题求助

Maven构建时从Artifactory下载构件速度极慢的排查与优化方案

先明确你的环境背景:
环境详情:

  • Artifactory版本:4.12.2
  • 服务器操作系统:Ubuntu 16(仅部署Artifactory,无其他服务)
  • 网络拓扑:本地主机与Artifactory服务器直连,无代理
  • 本地构建环境:Maven 3.3.9、Java 1.8

你遇到的问题是:执行mvn clean install时构件下载速率极低(例如Downloaded: http://IP:PORT/XXXX (235 KB at 0.3 KB/sec)),导致构建耗时过长。你的Maven settings.xml配置如下:

<properties>
<deploy.snapshot.id>repo</deploy.snapshot.id>
<deploy.snapshot.url>http://IP:PORT/artifactory/libs-snapshot-local</deploy.snapshot.url>
<deploy.release.id>repo</deploy.release.id>
<deploy.release.url>http://IP:PORT/artifactory/libs-release-local</deploy.release.url>
</properties>
<repositories>
<repository>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://IP:PORT/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://IP:PORT/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://IP:PORT/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://IP:PORT/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>

接下来按优先级给你排查和解决思路:


1. 先排除底层网络问题

这是最基础的排查步骤,先确认是不是网络本身的问题:

  • 在本地主机用wget或curl直接下载同一个慢速率的构件,比如:
    wget http://IP:PORT/artifactory/libs-release/com/example/your-artifact/1.0.0/your-artifact-1.0.0.jar
    
    • 如果这个命令的下载速度也慢,说明问题出在网络链路(比如网线故障、服务器网卡配置、交换机端口限制),可以:
      • 检查Artifactory服务器的网络状态,用netstat -tulpn看端口监听是否正常,iostat看网络IO负载;
      • 更换直连的网线或端口测试;
      • 在服务器上用iperf测试与本地主机的带宽,确认是否能达到正常的传输速率。
    • 如果wget/curl速度正常,那问题就出在Maven或JVM的网络配置上。

2. 优化Maven的网络传输配置

Maven默认的HttpURLConnection在某些场景下性能不佳,可以尝试以下调整:

2.1 启用Apache HttpClient作为传输器

Maven 3.x支持替换默认的传输组件,改用更高效的Apache HttpClient。可以在你的项目pom.xml或者全局settings.xml中添加如下配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-wagon-plugin</artifactId>
      <version>3.5.4</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.wagon</groupId>
          <artifactId>wagon-http</artifactId>
          <version>3.5.4</version>
          <exclusions>
            <exclusion>
              <groupId>org.apache.maven.wagon</groupId>
              <artifactId>wagon-http-shared</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>org.apache.maven.wagon</groupId>
          <artifactId>wagon-http-shared</artifactId>
          <version>3.5.4</version>
          <exclusions>
            <exclusion>
              <groupId>org.eclipse.jetty</groupId>
              <artifactId>*</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.14</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

2.2 调整JVM网络参数

有时候JVM默认优先使用IPv6会导致解析延迟,强制使用IPv4可以缓解:

  • 编辑Maven的启动脚本(比如/usr/bin/mvn),在MAVEN_OPTS中添加:
    export MAVEN_OPTS="$MAVEN_OPTS -Djava.net.preferIPv4Stack=true"
    
  • 或者在执行Maven命令时临时添加:
    mvn clean install -Djava.net.preferIPv4Stack=true
    

2.3 检查本地仓库缓存

如果本地仓库的构件缓存损坏,Maven可能会反复重新下载。可以:

  • 删除本地仓库中对应慢下载构件的目录(默认路径是~/.m2/repository/[构件包路径]);
  • 执行mvn clean install -U强制更新快照和依赖,重新下载构件。

3. 检查Artifactory服务器端配置

服务器端的限制也可能导致下载缓慢:

  • 速率限制检查:登录Artifactory后台,进入Admin > Security > General Settings,查看是否开启了针对匿名用户或特定用户的下载速率限制,如果有,调整为合适的值或暂时关闭测试;
  • 仓库存储检查:确认Artifactory的仓库存储目录是否在慢速磁盘(比如机械硬盘),可以用df -h查看磁盘挂载情况,iostat检查磁盘IO使用率;
  • 日志排查:查看Artifactory的日志文件(默认路径$ARTIFACTORY_HOME/logs/artifactory.log),搜索下载请求相关的日志,看是否有连接超时、线程池不足、IO异常等信息。

4. 优化settings.xml配置

你的settings.xml里有几个可以微调的点:

  • 给<snapshots>标签添加<updatePolicy>always</updatePolicy>(如果需要实时获取最新快照)或者保留daily,但确保不会频繁触发不必要的检查;
  • 添加<servers>配置,即使是匿名访问,也可以明确配置对应的仓库ID,避免Maven反复尝试认证:
    <servers>
      <server>
        <id>central</id>
      </server>
      <server>
        <id>snapshots</id>
      </server>
    </servers>
    

内容的提问来源于stack exchange,提问作者zaq wsx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:49:16