Liferay CE 7.0.4 GA5启动冻结问题排查求助
Liferay 7.0.4 GA5单节点启动冻结故障排查与解决
故障原因排查方向
- Marketplace安装缓存异常:尽管集群部署包一致,单节点可能存在本地安装残留或损坏。对比故障节点与正常节点的
${LIFERAY_HOME}/osgi/marketplace目录,检查是否有损坏的lpkg文件、临时安装文件,或目录结构/文件哈希值不一致。 - Spring上下文初始化阻塞:结合Catalina日志终止点与线程dump的等待线程,重点定位阻塞源:
- 分析线程dump中
WAITING状态线程的锁资源,判断是数据库连接、文件锁还是分布式缓存锁导致等待 - 验证故障节点与数据库的连通性,检查数据库端是否对该节点IP有连接限制,或连接池是否耗尽
- 排查分布式缓存(如Ehcache)配置,确认该节点是否无法获取集群缓存锁而阻塞
- 分析线程dump中
- 文件系统权限/空间问题:检查RedHat系统下Tomcat运行用户对
${LIFERAY_HOME}的data、osgi、temp目录是否有完整读写权限;同时确认/tmp目录剩余空间,Liferay初始化依赖临时目录生成文件,空间不足会导致冻结。 - JVM参数不一致:对比故障节点与正常节点的JVM启动参数(堆内存、GC参数、系统属性),比如是否存在堆内存不足导致的GC长时间停顿,或自定义系统属性干扰了Liferay初始化流程。
解决方向
- 清理并同步Marketplace缓存:
- 停止故障节点Tomcat
- 删除
${LIFERAY_HOME}/osgi/marketplace下所有文件及子目录 - 从正常节点复制完整的
marketplace目录到故障节点 - 重启节点,观察是否仍重复提示重启安装
- 解除Spring上下文阻塞:
- 若线程dump显示等待数据库连接:检查数据库端的IP白名单,重启Tomcat连接池或调整连接池最大连接数参数
- 若为分布式缓存锁问题:临时将故障节点的缓存配置改为本地模式(修改
portal-ext.properties中的缓存相关参数),启动后再逐步恢复集群缓存配置
- 修复文件权限与空间:
- 执行
chown -R [tomcat运行用户]:[用户组] ${LIFERAY_HOME},确保目录权限与正常节点一致 - 清理
/tmp目录冗余文件,释放足够空间
- 执行
- 统一JVM参数:
- 复制正常节点
catalina.sh或setenv.sh中的JVM参数到故障节点,确保-Xmx、-XX:MetaspaceSize等核心参数完全一致
- 复制正常节点
内容的提问来源于stack exchange,提问作者KRISTIJAN TOMASINI
相关产品推荐
相关产品推荐

