Tomcat崩溃排查 | 您所在的位置:网站首页 › tomcat查看日志linux › Tomcat崩溃排查 |
现象
Tomcat运行过程中出现崩溃现象,所幸服务器监控程序自动对其执行了重新启动,因此对生成环境没有造成太久的服务中断。
崩溃问题首次出现,考虑为偶然情况。然而在几日之内,Tomcat再次崩溃,因此需要调查具体崩溃原因,初步考虑后,推测是由于Tomcat运行所占内存过大,因此被系统kill,准备升级服务器。 排查 1. Tomcat内存占用过大,被系统kill。假设是系统所为,一般会有系统日志: cat /var/log/messages 查看后没有发现kill、mem相关日志。 2. Jvm遇到致命错误崩溃。如果Jvm遇到致命错误而崩溃,应当会在程序目录生成hs_err_pid.log等错误报告文件: ll tomcat/bin 查看后没有找到崩溃日志。 3. Tomcat遇到错误崩溃。直接查看Tomcat日志: cat tomcat/logs/catalina.out 日志量非常大,经过拆分后,定位到崩溃日期附件,终于找到蛛丝马迹: 2022-06-14 08:29:14,121 [ERROR] ControllerHelper:139 - readValue error: {g: *** Error in `//bin/java': malloc(): memory corruption: 0x00007fb4440a1de0 *** ======= Backtrace: ========= /lib64/libc.so.6(+0x82aa6)[0x7fb50ef30aa6] /lib64/libc.so.6(__libc_malloc+0x4c)[0x7fb50ef336fc] /usr/lib64/libse.so(Java_com_s_Se_d+0x142)[0x7fb39abb1cec] [0x7fb4fa7206c7] ======= Memory map: ======== 00400000-00401000 r-xp 00000000 fd:01 1307450 /usr/java/jdk1.8.0_131/jre/bin/java 00600000-00601000 rw-p 00000000 fd:01 1307450 /usr/java/jdk1.8.0_131/jre/bin/java 00828000-009c9000 rw-p 00000000 00:00 0 [heap] 6c7c00000-708a00000 rw-p 00000000 00:00 0 708a00000-76d400000 ---p 00000000 00:00 0 76d400000-783080000 rw-p 00000000 00:00 0 783080000-7c0000000 ---p 00000000 00:00 0 7c0000000-7c1580000 rw-p 00000000 00:00 0 7c1580000-800000000 ---p 00000000 00:00 0 7fb32db7e000-7fb32db81000 ---p 00000000 00:00 0 7fb32db81000-7fb32dc7f000 rw-p 00000000 00:00 0 7fb32dc7f000-7fb32dc82000 ---p 00000000 00:00 0 由此可见,Tomcat在运行过程中,底层代码库(so文件)遇到了内存错误,从而导致Tomcat崩溃,具体而言,出错的库文件如下: usr/lib64/libse.so(Java_com_s_Se_d+0x142)[0x7fb39abb1cec] 即libse.so库文件存在问题,该库文件非系统自带,为业务底层代码库,因此修复之即可。 |
CopyRight 2018-2019 实验室设备网 版权所有 |