Низкая производительность обхода кластера ArangoDB - PullRequest
0 голосов
/ 12 сентября 2018

Недавно мы перевели наш продукт с одного узла ArangoDB в кластерный режим ArangoDB (версия 3.3.9). В результате мы испытываем гораздо более длительное время запросов. Приведенный выше запрос возвращает данные об одном узле ArangoDB в течение нескольких миллисекунд:

WITH Node_Collection_1
FOR c IN Node_Collection_1


LET neighbours = (FOR v,e,p IN INBOUND c._id 
Edge_Collection_1
RETURN v._key
)

return {
    content: c._key,
    neighbours: neighbours
}

В кластеризованной ArangoDB один и тот же запрос к тем же данным занимает несколько секунд (~ 15 секунд).

В нашем случае использования у нас есть много маленьких графов (1 коллекция узлов и 1 коллекция ребер на граф), и поэтому мы настроили каждую коллекцию, чтобы иметь только один шард, так как каждый граф не будет слишком большим. Конфигурация кластера:

  • 3 узла данных
  • 3 узла агента
  • 1 узел-координатор

Все они распределены между 3 машинами AWS поверх Kubernetes.

Если предположить, что Node_collection_1 и Edge_collection_1 оказались на одном и том же узле данных, почему происходит столь резкое снижение задержки по сравнению с настройкой одного узла? И что можно сделать, чтобы улучшить это?

...