В чем разница между hazelcast.operation.thread.count и hazelcast.operation.generic.thread.count в hazelcast? - PullRequest
0 голосов
/ 01 сентября 2018

Мы пытаемся оптимизировать производительность Hazelcast, и мы запускаем кластер из 16 узлов (8 ядерных ВМ), так что у нас всего 4001 раздел в кластере, и мы настроили 50 потоков операций на узел. Нам нужно улучшить производительность, то есть увеличить пропускную способность и уменьшить время отклика, поэтому мы также подумываем о настройке hazelcast.operation.generic.thread.count.

1) В чем разница между hazelcast.operation.generic.thread.count и hazelcast.operation.thread.count? Какие операции выполняет hazelcast.operation.generic.thread?

2) Соотношение между числом разделов и потоков операций составляет около 5: 1, мы намерены уменьшить это соотношение, так как мы предполагаем, что оно улучшит производительность. Что рекомендуется, увеличивая число узлов или не подсчитывая количество потоков операций в одном и том же количестве узлов?

3) Целесообразно ли в нашей ситуации линейное масштабирование узлов Hazelcast с одинаковым количеством ядер и одинаковым объемом памяти?

1 Ответ

0 голосов
/ 01 сентября 2018
  1. Как описано здесь, http://docs.hazelcast.org/docs/3.10.4/manual/html-single/index.html#partition-aware-operations, hazelcast.operation.thread.count управляет размером пула потоков для операций с поддержкой разделов, например imap.get/put/delete и т. Д. Если вы хотите повысить производительность этих операций, что вы можете изменить это свойство. Значением этого свойства по умолчанию является количество ядер ЦП, в вашем случае - 8.

    hazelcast.operation.generic.thread.count контроль размера пула потоков для общих операций. как iexecutor.execute и т. д. Я полагаю, что вы не заинтересованы в повышении производительности для таких операций.

  2. Одна важная вещь в том, что у вас 4001 раздел, каков ваш размер данных? Hazelcast предлагает раздел должен быть между 50-100 МБ. (Пожалуйста, отметьте https://hazelcast.com/resources/hazelcast-deployment-operations-guide/) Так что в вашем случае я ожидаю, что вы предоставили данные 200-400 ГБ. Если нет, это означает, что у вас слишком много небольших разделов. Это также влияет на производительность.

  3. Поскольку у вас 8 ядер на каждой виртуальной машине. установка числа потоков операций на 50 не сильно увеличивает производительность, потому что у вас в кластере 16 * 8 = 124 ядра ЦП. Если вы не добавите больше ЦП, просто увеличение количества потоков не приведет к увеличению производительности, по крайней мере, через некоторое время. Таким образом, вы должны добавить больше узлов в кластер или увеличить количество процессоров для каждой виртуальной машины. Это сильно повлияет на производительность.

...