首页
/ Eclipse OpenJ9在zLinux OCP环境下InstantOn启动时的事务超时问题分析

Eclipse OpenJ9在zLinux OCP环境下InstantOn启动时的事务超时问题分析

2025-06-24 14:32:56作者:幸俭卉

问题背景

在zLinux/s390x架构的OpenShift容器平台(OCP)上部署基于Liberty InstantOn检查点镜像的应用时,系统启动过程中会出现jakarta.transaction.TransactionRolledbackException: Transaction is ended due to timeout异常。这一现象仅在zLinux OCP环境中出现,其他平台运行正常。

问题现象

从日志中可以观察到,Liberty服务器启动过程中,事务处理出现了120秒超时后被回滚的情况。关键日志显示:

  1. 事务超时警告:WTRN0006W: Transaction ... has timed out after 120 seconds
  2. 事务回滚记录:WTRN0041I: Transaction ... has been rolled back
  3. 最终抛出异常:jakarta.transaction.TransactionRolledbackException: Transaction is ended due to timeout

技术分析

经过深入调查,发现问题与Eclipse OpenJ9的即时编译(JIT)和预先编译(AOT)机制有关,具体表现为:

  1. 平台特异性:问题仅出现在zLinux/s390x架构,其他架构无此问题
  2. AOT编译影响:当禁用AOT编译(-Xnoaot)时,问题不再复现
  3. 关键方法定位java/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask.getDelay方法中的System.nanoTime调用在AOT编译中被加速处理

根本原因

在zLinux平台上,OpenJ9的AOT编译器对System.nanoTime()方法进行了特殊优化,将其转换为直接使用s390x架构的STCKF指令(Store Clock Fast)来获取高精度时间。这种优化在常规场景下能提升性能,但在InstantOn检查点恢复场景下可能导致时间计算异常。

具体表现为:

  1. AOT编译生成的代码使用STCKF指令直接读取硬件时钟
  2. 检查点恢复后,时间计算可能出现偏差
  3. 导致事务管理器错误判断事务持续时间,触发超时回滚

解决方案

针对这一问题,开发团队提出了以下解决方案:

  1. 临时解决方案:在zLinux平台上为InstantOn场景禁用对System.nanoTime()的AOT加速优化
  2. 长期方案:完善AOT编译器的检查点感知能力,确保在生成可重定位代码时正确处理时间相关操作

验证表明,临时解决方案在20次连续测试中均未再出现事务超时问题,证实了问题定位的准确性。

技术启示

这一案例为我们提供了几个重要的技术启示:

  1. 即时编译与检查点恢复的交互:JIT/AOT优化需要考虑检查点恢复场景的特殊性
  2. 时间处理的平台差异:不同架构对时间操作有不同的硬件加速方式,需要统一处理
  3. 事务管理的依赖性:事务超时机制高度依赖准确的时间计算,任何时间处理异常都可能导致事务错误

总结

Eclipse OpenJ9团队通过细致的日志分析和实验验证,成功定位并解决了zLinux OCP环境下Liberty InstantOn启动时的事务超时问题。这一案例不仅解决了具体的技术问题,也为JVM在检查点恢复场景下的优化处理提供了宝贵经验。未来,团队将继续完善AOT编译器对检查点场景的支持,确保类似优化在不同平台上都能正确工作。

登录后查看全文

项目优选

收起
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
51
15
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
577
417
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
125
208
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
77
146
folibfolib
FOLib 是一个为Ai研发而生的、全语言制品库和供应链服务平台
Java
110
6
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
444
39
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
693
91
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
80
13
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
98
253
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
359
342