Hazelcast - обнаружение ложного обмена - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть 3-х узловый кластер Hazelcast, который имеет немного параллельной активности.Поскольку нагрузка увеличилась, я замечал периодическую медленную производительность при взаимодействии с элементами в кластере.Например, чтение с карты обычно занимает миллисекунды, но в других случаях это занимает более 10 секунд.Это не связано с одной коллекцией, но происходит в разных коллекциях кластера.Эти задержки кажутся случайными без каких-либо очевидных закономерностей относительно того, когда они будут происходить.

Я также заметил несколько предупреждений о медленной работе в журналах диагностики из карты, которую я использую для хранения некоторых потенциально больших объектов.Основываясь на этих наблюдениях, я подозреваю, что я сталкиваюсь с «ложным совместным использованием», как описано в документации (https://docs.hazelcast.org/docs/3.9.1/manual/html-single/index.html)

Ложное совместное использование раздела - две совершенно независимые структуры данных совместно используют один и тот же раздел.Например, если есть карта сотрудников и карта заказов, метод employee.get ("peter"), работающий на разделе 25, может быть заблокирован методом orders.get (1234), также работающим на разделе 25. Если независимые структуры данныхПри совместном использовании одного и того же раздела медленная операция над одной структурой данных может замедлить работу других структур данных.

Ложное совместное использование потока операций, поддерживающего разделы - каждый поток операций отвечает за выполнение операций на нескольких разделах.Например, поток 1 может отвечать за разделы 0, 10, 20 и т. Д., А поток 2 может отвечать за разделы 1, 11, 21 и т. Д. Если операция для раздела 1 занимает много времени, он блокируетвыполнение операции для раздела 11, потому что оба тhem отображаются в один и тот же поток операций.

Сначала я подумал, что мне нужно найти способ уменьшить размер объектов на карте, который предупреждает о медленных операциях, но перед тем, как продолжитьэтот потенциально большой рефакторинг, я хотел бы подтвердить, является ли "ложное разделение" на самом деле основной причиной.Есть ли способ определить, когда это происходит?Например, есть ли какие-либо метрики ведения журнала или JMX, которые показывают, сколько операций помещено в очередь для одного раздела или для одного потока операций?

...