最近几天经常遇到jenkins web无法访问的情况,systemctl restart jenkins.service后就正常了。
现象如下:
1. systemctl status jenkins.service,发现后台service运行正常
2. ps -ef | grep jenkins没有结果;netstat -tnlp | grep 8083也无结果。很好奇,systemctl status和ps查询结果为啥对应不上。。
3. 查询jenkins.log,根据systemctl status jenkins.service可知启动文件位置,再找到jenkins.log位置
发现莫名其妙启动jenkins,而且出现端口占用的异常,实在没想明白。
4. top操作,发现jenkins内存占用一直11.7%以上,16G内存,也就是长期占用接近2G,是否可能是linux的OOM-killer造成的?
5. 查询linux主动kill的进程日志,发现28323就是之前jenkins的pid
为确认kill进程的原因,查询内核日志,dmesg -T -d | grep java
的确是因为OOM,jenkins服务占用内存一度达到10G。。原因还未搞清楚
6. 设置jvm启动/运行时参数,限制堆内存, -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m
6. 监控下gc,jstat -gcutil 13771,服务启动后一天内FullGC4次,时间0.448s,还可以。Jenkins web无法访问的问题算是解决了。