You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Maven部署440MB构件至Nexus失败,求排查方案

解决Nexus 2.13上传440MB构件失败(连接重置)的问题

结合你描述的场景——300MB文件上传正常,440MB失败,Nexus GUI能看到文件但日志报连接池超时——这大概率是超时配置不足导致的,而非Nexus本身有硬文件大小限制(Nexus 2.x默认没有全局文件大小限制)。下面分几个方向给你排查和解决的方案:

1. 调整Maven端的上传超时配置

大文件上传需要更长的连接和读写时间,Maven默认的超时阈值可能不足以支撑440MB的传输。你可以在deploy命令中直接添加超时参数:

mvn -e -X deploy:deploy-file -DgroupId=de.test.oca -DartifactId=wildfly-image -Dversion=0.0.1-SNAPSHOT -Dpackaging=tar.gz -Dfile=oca-wildfly-image-0.0.1-snapshot.tar.gz -DrepositoryId=oca-snapshots -Durl=http://xx.xx.xx:8081/nexus/content/repositories/oca-snapshots -Dmaven.wagon.http.connectionTimeout=1800000 -Dmaven.wagon.http.socketTimeout=1800000

或者更持久化的方式,在settings.xml的对应server配置里添加超时:

<server>
  <id>oca-snapshots</id>
  <!-- 其他配置比如用户名密码 -->
  <configuration>
    <httpConfiguration>
      <all>
        <connectionTimeout>1800000</connectionTimeout> <!-- 30分钟,单位毫秒 -->
        <socketTimeout>1800000</socketTimeout>
      </all>
    </httpConfiguration>
  </configuration>
</server>

2. 修改Nexus的Jetty容器超时配置

Nexus 2.x基于Jetty运行,默认的连接空闲超时可能会中断大文件的上传进程。找到Nexus安装目录下的配置文件:

  • 编辑conf/jetty.xml,找到maxIdleTime参数,把默认的300000(5分钟)调整为更大的值,比如1800000
    <Set name="maxIdleTime">1800000</Set>
    
  • 再编辑conf/jetty-http.xml,修改idleTimeout参数,同步设置为1800000
    <Set name="idleTimeout">1800000</Set>
    

修改完成后重启Nexus服务,再尝试上传。

3. 检查代理服务器的限制

你已经配置了代理服务器,要确认代理本身是否有上传文件大小或超时限制:

  • 如果是Apache代理,检查LimitRequestBody配置,确保值大于440MB(比如设置为461373440,即440MB对应的字节数);
  • 如果是Nginx代理,检查client_max_body_size参数,设置为450M或更大;
  • 同时确认代理的连接超时配置,避免中途断开连接。

4. 辅助排查点

  • 确认Nexus所在服务器的磁盘空间充足,避免因为磁盘满导致文件写入失败;
  • 查看Nexus的nexus.log,如果有文件校验相关的错误,可以适当调大Nexus的后台线程池:在nexus.properties中添加或修改nexus.scheduler.threadPoolSize=10(默认可能是5),提升后台处理效率。

按照这个顺序排查调整,应该能解决440MB构件的上传问题。

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

火山引擎 最新活动