繁体   English   中英

如何为大型缓存值正确准备 Apache Ignite?

[英]How to properly prepare Apache Ignite for large cache values?

我有一个IgniteCache<String, byte[]>

此缓存中的值可以小到数百兆字节。

从我读过的文档来看,缓存条目的值没有硬性限制。 这是令人放心的。

但是我的用例有什么问题需要担心吗?

例如,我需要针对这种情况专门设置任何配置设置吗?

我不建议条目大于几 MB。 它可能会导致各种网络或内存问题。

如果必须,您需要尝试尽可能大的值,然后调整设置,直到您满意为止。 我可以想到的一件事是,将TcpCommunicationSpi.ackSendThreshold设置为某个较小的值,例如 4(默认为 32),以避免这些大消息位于队列中。 但可能有很多事情需要调整。

在内部,Ignite 使用字节缓冲区来序列化数据,这些缓冲区受Integer.MAX_VALUE限制,因此 2GiB 是最大缓存条目大小。

一些 Ignite API 批量处理数据,在处理大条目时减少批量/页面大小是个好主意:

  • Query.pageSize (适用于 Scan、SQL、Continuous 查询)- 默认为 1024
  • IgniteDataStreamer.perNodeBufferSize , perThreadBufferSize - 默认为 512 和 4096

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM