(本文档仅供参考)

问题现象

1、web端突然无法正常使用,查看后台没有了进程。

2、打印的线程通常间隔10分钟打印,线程文件夹中看到某个时间没有打印线程,此时大概率是没有进程。

解决方案

没有进程通常是JDK崩溃或是应用服务器存在bug,故以下主要针对JDK崩溃导致提供相关解决方案。

原因一:根据以往经验缺少X11参数,比较大可能会导致JDK崩溃,使得进程没了。

解决方案:添加 -Djava.awt.headless=true 参数,避免因缺少改参数导致JVM崩溃。参数添加可以参考wiki文档:应用服务器JVM参数配置

注:此原因导致JDK崩溃,一般不会生成"hs_err_pidxxxx.log"的文件。


通过应用服务器bin目录下名称是"hs_err_pidxxxx.log"的文件(一般JVM崩溃应用服务器会自动生成文件)进一步分析问题原因(可根据 Possible reasons 下的内容百度查找相关报错原因),以下为两个遇到过的示例:

报错:


# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit


原因二:内存设置的最大值(xmx)大于服务器物理内存空闲的值,此时JDK无法正常使用,则出现崩溃情况。

解决方案:建议增大服务器物理内存;若实在无法增加服务器内存,可减少xmx值,但该值建议是配置16G及以上,关于系统环境配置可以参考wiki文档:系统环境要求


报错:

# Problematic frame:
# C [libtcnative-1.so.0.2.16+0x15d4b] Java_org_apache_tomcat_jni_Socket_sendbb+0x1b

原因三:libtcnative-1.so 文件存在bug,使得JDK崩溃,从而导致进程退出

解决方案:建议更新libtcnative-1.so文件,若更新文件无效,建议从tomcat应用服务器中移除该文件。(此文件存放于tomcat应用服务器bin目录下)



报错:

# JRE version: OpenJDK Runtime Environment (8.0_275-b01) (build 1.8.0_275-b01)
# Java VM: OpenJDK 64-Bit Server VM (25.275-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libapr-1.so.0+0x1f9db] apr_pool_destroy+0xb

原因四:据了解目前tomcat启用了APR协议(smartbi启动后可从tomcat日志中查看,如下图),根据以往经验,若是tomcat启用APR协议,可能会引发某些JDK的BUG,可尝试从tomcat应用服务器中移除文件 tcnative*.* (此文件存放于tomcat应用服务器bin目录下);若方便更换JDK,也可尝试更换JDK。