架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11567|回复: 0

[资料] 【实战】记 Java 应用在 Linux 服务器运行挂掉问题排查

[复制链接]
发表于 2021-9-9 10:52:50 | 显示全部楼层 |阅读模式
早晨打开 dev 环境的网站,某菜单列表数据没有加载出来,发现接口确实存在问题,通过服务发现查看注册的应用,发现模块下线,同事,据同事反应昨天某个模块的应用挂掉了,重新发布一次又好了。

登录服务器查看 Java 应用重定向输出的文件和日志文件,发现最后日志时间停留在了 21:15,如下图:

QQ截图20210909103453.jpg

查看系统日志

Sep  8 21:30:05 centos7-dev04 kernel: Out of memory: Kill process 32452 (java) score 84 or sacrifice child
Sep  8 21:30:05 centos7-dev04 kernel: Killed process 32452 (java), UID 0, total-vm:7016412kB, anon-rss:1421400kB, file-rss:0kB, shmem-rss:0kB

QQ截图20210909101956.jpg

如果怀疑应用是被 Linux 杀掉的话,也可以通过如下命令快速排查:

QQ截图20210909102039.jpg

查看内存使用情况,命令如下:

QQ截图20210909104411.jpg

通过 top 命令,然后输入 m 键,根据进程使用内存进行排序,如下图:

PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

QQ截图20210909095932.jpg

发现 Java 应用确实非常占用内存,应用挂掉的原因就是因为服务器内存不足,Linux 自动根据一些规则杀掉了 Java 应用,毕竟 Java 应用占用的内存非常大。

可以通过如下命令查看具体是哪个 Java 应用:

QQ截图20210909104837.jpg

解决方案

1.增加服务器内存
2.限制 Java 应用的内存使用
3.将一些 Java 应用迁移到其它服务器





上一篇:Linux 之 Overlay 文件系统在 Docker 中的应用
下一篇:推荐两款分析 Docker 镜像层的工具
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-26 19:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表