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
相关产品推荐
相关产品推荐

