Linux服务问题排查

153 阅读1分钟

服务莫名挂了

我用的服务在阿里云机器上,配置成了systemctl服务,但是莫名服务过几天停一次。 使用journalctl -u tomcat 查看日志,按shift+g 如下

Apr 26 15:03:58 iZ2ze62pkv9hkpv2n1hkb1Z systemd[1]: Starting Tomcat...
Apr 26 15:03:58 iZ2ze62pkv9hkpv2n1hkb1Z startup.sh[73056]: Tomcat started.
Apr 26 15:03:58 iZ2ze62pkv9hkpv2n1hkb1Z systemd[1]: Started Tomcat.
Apr 27 21:22:41 iZ2ze62pkv9hkpv2n1hkb1Z systemd[1]: tomcat.service: Main process exited, code=killed, status=9/KILL
Apr 27 21:22:41 iZ2ze62pkv9hkpv2n1hkb1Z systemd[1]: tomcat.service: Failed with result 'signal'.

参考文章 执行journalctl -xb | egrep -i "killed process" 如下:

Apr 27 21:22:42 iZ2ze62pkv9hkpv2n1hkb1Z kernel: Out of memory: Killed process 73064 (java) total-vm:3998312kB, anon-rss:604344kB, file-rss:0kB, shmem-rss:32kB, UID:0 pgtables:1652kB oom_score_adj:0

得出根因是内存溢出(当内存不够时,OOM Killer会按策略杀掉进程,可能是杀掉占用内存最大的一个),rss值就是内存占用量。 查看监控确实内存比较高

定位内存占用高

执行top,shift+m,按内存占用排序,看哪些不正常或优化。