Производительность Ne4J в Куберне слишком медленная - PullRequest
0 голосов
/ 14 мая 2018

Я использую Kubernetes для развертывания.У нас есть стек приложений на базе Node.js и Neo4j.

Для более низкой среды мы используем одноядерный экземпляр в самом Kubernetes и настраиваемый с помощью приложения на основе Node.js.В этом случае он работает нормально.Например, простой вход в API занимает около 660 мс.

Но для более высокой среды мы используем случайный кластер, который устанавливается с помощью этой диаграммы управления здесь .У нас три кластера машин.Каждая машина содержит одно ядро ​​и одну реплику чтения.Мы используем сходство POD для установки всех ядер и чтения реплик на компьютерах типа t2.xlarge в AWS.

Но производительность для этого кластера слишком низкая.Тот же код и тот же логин для API занимает около 4,93 секунды.

Я выделил 4 ГБ памяти кучи для ядра и 2 ГБ для минимума реплики чтения.При всех этих настройках производительность кластера слишком низкая.Я не уверен, что здесь не так.

Может кто-нибудь указать, что я делаю не так?

Спасибо за помощь, которую я всегда получаю от сообщества stackoverflow.

1 Ответ

0 голосов
/ 27 мая 2018

Мне удалось решить эту проблему. В Neo4J не было никаких проблем, что было первоначальным пониманием, поскольку это единственное изменение, которое мы имели в новом кластере. Было несколько проблем. 1) Один был запрос, который занимал много времени. У нас был зашифрованный запрос, который будет искать все узлы с некоторыми атрибутами, а затем использовать результат поиска отношений между узлами и узлами. Это не идеальный способ написания запроса. Нам пришлось исправить использование сложного запроса в одном выражении. 2) Наш бэкэнд-сервис требует много ресурсов процессора. Я установил лимит в бэкэнд-сервисе, что делало запрос и обработку результата очень медленными. Таким образом, увеличение лимита бэкэнд-сервиса устранило нашу проблему.

...