У меня есть двухузловой кластер Hazelcast размером 6 Гб каждый.У меня есть предикат, который работает на четырех полях, поэтому, например, для целей, давайте рассмотрим класс Employee
public class Employee {
String id,
String name,
String surname,
String timestamp
.....
}
Всего в классе около 13 полей или около того.Я выполняю запрос диапазона по метке времени и полностью совпадаю с остальными 3 полями - идентификатор, имя и фамилия.Для сериализации я использую IdentifiedDataSerializable, так как это наиболее эффективная форма сериализации, которую может предложить Hazelcast.У меня есть настройка контейнера сервлета tomcat, поэтому каждый входящий запрос запускает предикат в кластере.Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что в кластере примерно 100 000 записей, и я провожу тест производительности на контейнере Tomcat, большинство потоков Tomcat застревают, так как запрос предиката никогда не возвращается.Я посмотрел на модель потоков, предоставленную hazelcast - https://docs.hazelcast.org/docs/latest-dev/manual/html-single/index.html#threading-model.Я возился с разными видами потоков, используя свойства в документации, и это улучшило ситуацию, но в основном он работал в темноте.Я добавил индекс для идентификатора поля, но это тоже не улучшает ситуацию.
Я был бы очень признателен, если бы кто-то указал мне верное направление на то, как я мог бы решить эту проблему.Заранее спасибо!
РЕДАКТИРОВАТЬ -
Версия Hazelcast, используемая как для кластера, так и для клиента, составляет 3.9.Кроме того, я использую Hazelcast, как встроенный в приложение весенней загрузки.Не думаю, что это даст какой-то эффект, но хотел, чтобы вы все знали.