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

Apache Ignite缓存put操作耗时不稳定出现延迟尖峰如何解决

Apache Ignite 缓存写入周期性延迟尖峰问题

我在本地以默认配置运行Apache Ignite Docker容器,所有数据均存储于内存中。通过pyignite提供的cache.put()接口向缓存写入大小约200KB的base64字符串时,常规耗时约6ms,完全可满足我的性能需求;但每隔数次put操作就会出现约50ms的延迟尖峰,严重拉低了整套环境的整体性能。(上述base64编码字符串存储的是Microsoft AirSim生成的图像数据)

实际观测到的接口耗时数据如下:

IgniteDataProducer::put                         5.98       ms
IgniteDataProducer::put                         6.06       ms
IgniteDataProducer::put                         45.11      ms
IgniteDataProducer::put                         5.8        ms
IgniteDataProducer::put                         6.14       ms
IgniteDataProducer::put                         50.69      ms
IgniteDataProducer::put                         6.15       ms
IgniteDataProducer::put                         6.86       ms
IgniteDataProducer::put                         54.5       ms
IgniteDataProducer::put                         5.88       ms
IgniteDataProducer::put                         6.29       ms
IgniteDataProducer::put                         46.15      ms
IgniteDataProducer::put                         6.44       ms
IgniteDataProducer::put                         6.05       ms
IgniteDataProducer::put                         50.29      ms
IgniteDataProducer::put                         53.25      ms
IgniteDataProducer::put                         5.68       ms
IgniteDataProducer::put                         5.87       ms
IgniteDataProducer::put                         53.89      ms

核心诉求:

该现象产生的原因是什么?是否有方法降低这类延迟尖峰?

已尝试的调优手段

  • 部署多个Ignite节点
  • 为JVM分配不同容量的内存(范围从4GB到24GB)
  • 反复测试调整各类缓存配置参数
  • 调整GC策略(即便使用EpsilonGC,问题仍然存在)
  • 在性能更强的硬件上运行整套环境(该操作将常规耗时从6ms降至1ms,尖峰耗时从50ms降至20ms,但无法完全消除尖峰)
  • 安装带C扩展的pyignite版本

当前运行配置

缓存配置

SCENE_SCHEMA = {
    PROP_NAME: 'SQL_PUBLIC_SCENE',
    PROP_SQL_SCHEMA: 'PUBLIC',
    PROP_CACHE_MODE: 2,
    PROP_CACHE_ATOMICITY_MODE: 1,
    PROP_WRITE_SYNCHRONIZATION_MODE: 1,
    PROP_BACKUPS_NUMBER: 0,
    PROP_IS_ONHEAP_CACHE_ENABLED: True,
    PROP_REBALANCE_MODE: 1,
    PROP_QUERY_PARALLELISM: 2,
    PROP_PARTITION_LOSS_POLICY: 4,
    PROP_QUERY_ENTITIES: [
        {
            'table_name': 'SCENE',
            'key_field_name': 'TIMESTAMP',
            'key_type_name': 'java.lang.Long',
            'field_name_aliases': [],
            'query_fields': [
                {
                    'name': 'TIMESTAMP',
                    'type_name': 'java.lang.Long',
                    'is_key_field': True,
                    'is_notnull_constraint_field': True,
                },
                {
                    'name': 'SCENE_BINARY',
                    'type_name': 'byte[]',
                },
            ],
            'query_indexes': [],
            'value_type_name': 'SQL_PUBLIC_SCENE_TYPE',
            'value_field_name': None,
        },
    ],
}

JVM启动参数

-server
-Xms10g
-Xmx10g
-XX:+AlwaysPreTouch
-XX:+UseG1GC
-XX:+ScavengeBeforeFullGC
-XX:+DisableExplicitGC

组件版本信息

python == 3.8.6
pyignite == 0.5.2
ignite docker image == 2.13.0

非常感谢任何相关的帮助或提示!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:21:28