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

Nexus Repository OSS 3.4.0内存泄漏致服务异常,求恢复方案

Nexus Repository Manager OSS 3.4.0 内存泄漏与服务异常恢复求助

部署在虚拟机上的Nexus Repository Manager OSS 3.4.0突发异常:Nexus UI、Docker拉取/推送均超时。初始日志显示JVM垃圾回收时出现OOM,重启服务及虚拟机后仅能正常运行数分钟,随即再次出现超时问题。每次重启后,日志中均出现org.elasticsearch.monitor.jvm相关错误,表明存在内存泄漏。

日志详情

-------------------------------------------------

Started Sonatype Nexus OSS 3.4.0-02

-------------------------------------------------
2023-02-11 05:43:43,849+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.ServerConnector - Started ServerConnector@222517ad{SSL,[ssl, http/1.1]}{0.0.0.0:8082}
2023-02-11 05:43:43,850+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.ServerConnector - Started ServerConnector@6aa47140{SSL,[ssl, http/1.1]}{0.0.0.0:8083}
2023-02-11 05:43:47,997+0000 INFO  [quartz-2-thread-2] *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Health Check: maven-central' [healthcheck] state change WAITING -> RUNNING
2023-02-11 05:43:49,377+0000 INFO  [quartz-2-thread-2] *SYSTEM org.sonatype.nexus.scheduling.internal.TaskSchedulerImpl - Task 'Health Check: maven-central' [healthcheck] scheduled: hourly
2023-02-11 05:43:49,381+0000 INFO  [quartz-2-thread-2] *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Health Check: maven-central' [healthcheck] state change RUNNING -> WAITING (OK)
2023-02-11 05:46:09,341+0000 INFO  [qtp1622059521-199] *UNKNOWN org.apache.shiro.session.mgt.AbstractValidatingSessionManager - Enabling session validation scheduler...
2023-02-11 05:46:09,353+0000 INFO  [qtp1622059521-199] *UNKNOWN org.sonatype.nexus.internal.security.anonymous.AnonymousManagerImpl - Loaded configuration: AnonymousConfiguration{enabled=true, userId='anonymous', realmName='NexusAuthenticatingRealm'}
2023-02-11 05:47:33,161+0000 INFO  [elasticsearch[12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480][scheduler][T#1]] *SYSTEM org.elasticsearch.monitor.jvm - [12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480] [gc][young][215][270] duration [708ms], collections [1]/[1.2s], total [708ms]/[1.9m], memory [8gb]->[7.8gb]/[12gb], all_pools {[young] [0b]->[4mb]/[0b]}{[survivor] [56mb]->[60mb]/[0b]}{[old] [7.9gb]->[7.7gb]/[12gb]}
2023-02-11 05:47:34,426+0000 INFO  [elasticsearch[12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480][scheduler][T#1]] *SYSTEM org.elasticsearch.monitor.jvm - [12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480] [gc][young][216][271] duration [727ms], collections [1]/[1.2s], total [727ms]/[1.9m], memory [7.8gb]->[7.7gb]/[12gb], all_pools {[young] [4mb]->[0b]/[0b]}{[survivor] [60mb]->[60mb]/[0b]}{[old] [7.7gb]->[7.6gb]/[12gb]}
2023-02-11 05:50:02,078+0000 WARN  [elasticsearch[12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480][scheduler][T#1]] *SYSTEM org.elasticsearch.monitor.jvm - [12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480] [gc][old][331][1] duration [29.1s], collections [1]/[30.9s], total [29.1s]/[29.1s], memory [11.4gb]->[9.1gb]/[12gb], all_pools {[young] [0b]->[4mb]/[0b]}{[survivor] [32mb]->[0b]/[0b]}{[old] [11.4gb]->[9.1gb]/[12gb]}
2023-02-11 05:50:02,092+0000 INFO  [quartz-2-thread-3] *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change WAITING -> RUNNING
2023-02-11 05:50:02,106+0000 INFO  [quartz-2-thread-3] *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change RUNNING -> WAITING (OK)
2023-02-11 05:51:13,155+0000 INFO  [elasticsearch[12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480][scheduler][T#1]] *SYSTEM org.elasticsearch.monitor.jvm - [12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480] [gc][young][400][466] duration [891ms], collections [1]/[1.3s], total [891ms]/[3.4m], memory [11.5gb]->[11.8gb]/[12gb], all_pools {[young] [128mb]->[0b]/[0b]}{[survivor] [48mb]->[16mb]/[0b]}{[old] [11.3gb]->[11.8gb]/[12gb]}
2023-02-11 05:51:46,711+0000 WARN  [elasticsearch[12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480][scheduler][T#1]] *SYSTEM org.elasticsearch.monitor.jvm - [12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480] [gc][old][401][2] duration [33.1s], collections [1]/[33.5s], total [33.1s]/[1m], memory [11.8gb]->[10.8gb]/[12gb], all_pools {[young] [0b]->[0b]/[0b]}{[survivor] [16mb]->[0b]/[0b]}{[old] [11.8gb]->[10.8gb]/[12gb]}
2023-02-11 05:52:04,488+0000 WARN  [elasticsearch[12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480][scheduler][T#1]] *SYSTEM org.elasticsearch.monitor.jvm - [12DEA86D-AA14EDFA-783CB331-3D44898F-42A9D480] [gc][young][418][486] duration [1.2s], collections [1]/[1.4s], total [1.2s]/[3.5m], memory [11.7gb]->[11.9gb]/[12gb], all_pools {[young] [340mb]->[0b]/[0b]}{[survivor] [40mb]->[4mb]/[0b]}{[old] [11.3gb]->[11.9gb]/[12gb]}

期望目标

  • 重启后CPU/内存使用恢复正常
  • 执行service nexus stop时Nexus能优雅关闭

已尝试操作

  • 大幅提升主机内存及JVM内存配置为:
-Xms12G
-Xmx12G
-XX:MaxDirectMemorySize=15G
  • 禁用CI流水线及微服务集群的所有部署,确保Nexus无负载
  • 在Nexus UI中取消/删除5个重复的仓库重新索引任务

观察到的现象

  • 重启后正常运行数分钟就出现超时,Nexus内存占用达100%
  • 无法优雅关闭Nexus,只能通过kill -9 [PID]强制重启
  • 日志显示Elasticsearch GC耗尽了所有JVM堆内存
  • 多个仓库重新索引任务卡在Cancelling状态(疑似与NEXUS-13121问题一致)

可行恢复方案

1. 清理卡死的索引任务

针对卡在Cancelling状态的任务,直接操作Nexus内置数据库清理:

  • 强制停止Nexus进程:kill -9 [PID]
  • 进入Nexus数据存储目录(默认路径:sonatype-work/nexus3/db)
  • 使用H2数据库客户端打开config数据库文件
  • 执行SQL删除卡死的索引任务:
DELETE FROM quartz_triggers WHERE SCHED_NAME = 'nexus' AND TRIGGER_NAME LIKE '%reindex%';
DELETE FROM quartz_job_details WHERE SCHED_NAME = 'nexus' AND JOB_NAME LIKE '%reindex%';
  • 保存修改后重启Nexus

2. 单独限制Elasticsearch堆内存

Nexus内置Elasticsearch默认内存占比过高,单独分配内存缓解GC压力:

  • 编辑Nexus启动配置文件:nexus/bin/nexus.vmoptions
  • 添加Elasticsearch内存参数(建议分配2-4G,不超过主机内存50%):
-Delasticsearch.jvm.options=-Xms2G -Xmx2G

3. 临时禁用自动索引

重启后立即登录Nexus UI,关闭所有仓库的自动索引功能:

  • 进入每个仓库的配置页面
  • 找到「Indexing」选项,取消勾选「Automatically Index New Components」
  • 保存配置,待服务稳定后再按需开启

4. 升级Nexus至稳定版本

3.4.0版本存在已知的Elasticsearch内存泄漏及任务管理bug,建议升级到最新OSS稳定版本(如3.60+),升级前务必备份sonatype-work/nexus3数据目录

5. 优化JVM GC配置

调整GC参数提升回收效率,修改nexus.vmoptions中的GC相关配置:

-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+ParallelRefProcEnabled

若使用JDK11及以上版本,可替换为ZGC优化:

-XX:+UnlockExperimentalVMOptions
-XX:+UseZGC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:25:30