带有谓词问题的大量查询

时间:2016-10-04 17:02:17

标签: hazelcast hazelcast-imap

我正在一个特定项目中将我的存储库更改为hazelcast。 我需要通过数据范围,商店类型和商店ID找到一些文档。 在我的测试中,我使用一个实例c3.large获得了90k的吞吐量,但是当我用更多实例执行相同的测试时,结果显着减少(10个实例500k和20个实例700k)。 这些数字是我调整一些属性的最佳数字:

  • hazelcast.query.predicate.parallel.evaluation
  • hazelcast.operation.generic.thread.count
  • 赫兹:查询

我试图将实例更改为c3.2xlarge以获得更多处理但是这些数字并不能证明价格合理。

在这种情况下,如何优化hazelcast以更快? 我的用户案例不使用map.get(key),只使用map.values(谓词)。

设置:

  • Hazelcast 3.7.1
  • 以数据结构映射;
  • 使用 IdentifiedDataSerializable ;
  • 的复杂对象
  • 已配置地图索引;
  • 地图上只有2000份文件;
  • Hazelcast嵌入式由Spring Boot Application(单例)配置;
  • 同一地区的所有实例。

测试

  • 转管
  • New Relic as service monitor。

欢迎任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

如果你的用例只包含带谓词的map.values,我强烈建议在内存存储模型中使用对象类型。这样,在Query执行期间不会涉及任何序列化。

另一方面,当你只有一名成员时,获得非常高的数字是正常的。因为,没有数据在网络上传输。可能需要改进,我会检查具有高网络容量的EC2实例。例如,c3.8xlarge具有10 Gbit网络,而c3.2xlarge附带的是High。

我无法承诺,你可以获得多少增加,但我肯定会首先尝试这些变化。