You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ignite为何忽略JVM的user.timezone配置?

Apache Ignite时区参数在Linux service.sh启动时不生效的解决办法

问题诊断

你在AlmaLinux 8上通过service.sh启动Ignite节点时,命令行指定的-J-Duser.timezone=UTC参数未生效,节点实际使用了系统CDT时区;而Windows上用ignite.bat启动的节点正常应用UTC时区。核心原因是service.sh脚本对-J前缀参数的处理逻辑和ignite.bat不同,导致部分JVM参数未正确传递给Ignite进程。

解决方案

1. 通过环境变量传递JVM参数

在启动服务前,先设置IGNITE_JVM_OPTS环境变量,将时区参数直接注入:

export IGNITE_JVM_OPTS="-Duser.timezone=UTC -DIGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK=true"
/opt/ignite/bin/service.sh start /etc/ignite/ignite-config.xml

2. 在Ignite配置文件中配置JVM参数

修改/etc/ignite/ignite-config.xml,添加JVM参数配置节点,确保启动时自动加载:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <!-- 保留原有配置项 -->
    <property name="jvmOptions">
        <list>
            <value>-Duser.timezone=UTC</value>
            <value>-DIGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK=true</value>
        </list>
    </property>
</bean>

3. 修改service.sh脚本直接添加参数

编辑/opt/ignite/bin/service.sh,找到定义JVM_OPTS的位置(通常在脚本开头或启动逻辑段),手动追加时区参数:

JVM_OPTS="$JVM_OPTS -Duser.timezone=UTC -DIGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK=true"

验证方式

启动节点后,可通过两种方式确认时区配置生效:

  • 执行SQL查询:SELECT CURRENT_TIMEZONE();,返回结果应为UTC
  • 查看节点启动日志,搜索JVM启动参数,确认-Duser.timezone=UTC存在

内容的提问来源于stack exchange,提问作者jceddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:12:17