我有一个两节点的Hazelcast集群,每个集群的堆大小为6gb。我有一个谓词,它在四个字段上运行,因此例如,我们考虑一个类Employee
public class Employee {
String id,
String name,
String surname,
String timestamp
.....
}
这个类总共有大约13个字段。我正在运行时间戳的范围查询,并与其他3个字段(id、name和surname)绝对匹配。对于序列化,我使用IdentifiedDataSerializable,因为这是hazelcast必须提供的最有效的序列化形式。我有一个tomcat servlet容器设置,因此每个传入的请求都会在集群上触发一个谓词。我目前面临的问题是,当集群中大约有100000条记录,并且我在tomcat容器上执行性能测试时,大多数tomcat线程都会因为谓词查询永远不会返回而陷入困境。我看过hazelcast提供的线程模型-
https://docs.hazelcast.org/docs/latest-dev/manual/html-single/index.html#threading-model
. 我已经使用文档中的属性对不同类型的线程进行了修改,它已经改进了一些东西,但基本上是在黑暗中触发的。我已经在字段id上添加了一个索引,但这也不是真正的改进。
如果有人指点我如何解决这个问题的正确方向,我将非常感激。提前谢谢你!
编辑-
用于集群和客户端的Hazelcast版本是3.9。另外,我将hazelcast嵌入到一个spring boot应用程序中。别以为会有什么效果,但想让你们都知道。