0

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

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

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

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

设置:

  • 榛树 3.7.1
  • 地图作为数据结构;
  • 使用IdentifiedDataSerializable的复杂对象;
  • 地图索引配置;
  • 地图上只有 2000 个文件;
  • 由 Spring Boot Application 配置的 Hazelcast Embedded(单例);
  • 同一区域中的所有实例。

测试

  • 加特林
  • New Relic 作为服务监视器。

欢迎任何帮助。谢谢。

4

1 回答 1

0

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

另一方面,当您只有 1 个成员时,获得非常高的数字是正常的。因为,没有数据跨网络移动。为了改进,我会检查具有高网络容量的 EC2 实例。例如,c3.8xlarge 具有 10 Gbit 网络,而 c3.2xlarge 附带的 High。

我不能保证你能得到多少增加,但我肯定会先尝试这些改变。

于 2016-10-06T22:08:43.493 回答