错误信息:
FATAL: Remote call on slave-10-133-13-51 failed
java.lang.OutOfMemoryError: GC overhead limit exceeded
问题如下图:
描述:
今天换了台机器跑jenkins,nodejs项目,用yarn安装依赖包,结果死活下不下来,于是我换成了cnpm,可以。但是再用sonar扫描后,最后提示成功了,sonar上也看到质检结果了,但是却提示OOM了。
解决过程:
- 去虚拟机jps jstat命令查看jenkins从节点remoting.jar的jvm状况,确认是从节点oom而不是sonar
- 我知道可能是cnpm下载的文件太多了,于是我用mat查看了从节点remoting.jar的OOM信息,发现确实很多是node_module的set占据了内存。
- 但是我sonar没有配置让他扫描node_modules啊?同样的配置在其他机器用yarn是没问题的。难道我要去看jenkins-sonar插件的源码?
- 最后灵机一动,我在shell的最后删除node_modules,再扫sonar-scanner,果然成功了。
一些用到的命令:
查看java进程:jps
查看jvm情况:jstat -gcold [pid] 3000
查看文件数量:ls -lR | grep “^d” | wc -l
删除文件:rm -rf node_modules