Glassfish自定义域莫名停止运行,求排查原因
Glassfish自定义域频繁无征兆停止的排查方向
结合你已经完成的排查(排除应用问题、内存扩容/调优无效、日志无异常),以下是几个可能的原因及排查点:
1. 系统级进程资源限制
- 检查Glassfish运行用户的资源限制:执行
ulimit -a查看进程数、文件句柄数等上限,自定义域可能因达到这些限制被系统强制终止。对比domain1运行用户的限制配置,确认是否存在差异。 - 查看系统内核日志:检查
/var/log/messages、dmesg或/var/log/syslog,寻找OOM Killer(内存不足杀手)的记录——即使整体内存使用率不到60%,也可能因单进程内存碎片、突发内存峰值导致自定义域进程被选中杀死。
2. 自定义域的JVM配置异常
- 对比domain1与domain4/domain5的JVM参数:查看
domain/config/domain.xml中的<jvm-options>节点,重点检查-Xms、-Xmx堆内存设置、GC相关参数。自定义域可能因堆内存设置不合理(如过大导致系统内存分配失败)、GC配置错误引发JVM崩溃。 - 检查启动脚本差异:确认启动domain4时使用的
sh asadmin start-domain domain4是否带有特殊参数,或自定义域的启动脚本存在语法错误、权限问题。
3. 第三方进程/定时任务误杀
- 排查定时任务:执行
crontab -l查看当前用户的定时任务,检查是否存在清理进程的脚本,是否错误匹配了自定义域的进程名(如仅匹配java进程而未区分不同域)。 - 检查运维工具:确认服务器上的监控、安全工具(如杀毒软件、进程管理工具)是否存在自动终止“异常”进程的规则,误将自定义域进程判定为异常进程。
4. 自定义域的文件权限或完整性问题
- 重新创建自定义域:删除现有domain4/domain5,用
asadmin create-domain重新创建,确保创建过程无报错,新域的文件权限与domain1完全一致(可通过ls -l对比目录权限)。 - 检查安装目录权限:确认Glassfish安装目录及自定义域目录的读写权限,是否因权限不足导致进程无法写入日志、加载配置而异常退出。
5. 隐性端口冲突
- 检查端口占用:执行
netstat -tulpn查看自定义域绑定的端口(如HTTP端口8080、管理端口4848)是否被其他进程抢占,或因防火墙规则导致进程无法绑定端口,进而触发退出。
内容的提问来源于stack exchange,提问作者norbert
相关产品推荐
相关产品推荐

