Не можете понять, почему зависает N1QL Queries в couchbase?

У меня есть кластер couchbase (couchbase версии 4.1), где есть N узлов данных, 1 узел запроса и 1 узел индекса. Узлы данных содержат примерно 1 миллион пар ключ-значение в одной корзине. Вся эта установка размещается в Microsoft Azure в виртуальной сети. И могу заверить вас, что у каждого узла достаточно ресурсов, поэтому ОЗУ, ЦП или диск не являются проблемой.

Теперь я могу без проблем ПОЛУЧАТЬ / УСТАНОВИТЬ документы JSON на моем сервере couchbase. Я просто тестирую, поэтому порты не проблема, так как я пока открыл все порты между машинами.

Но когда я пытаюсь запустить N1QL-запросы (из оболочки couchbase или с помощью Python SDK), это не работает. Запрос просто зависает, и я не получаю ответа от сервера. С другой стороны, время от времени запрос просто работает без каких-либо проблем, а затем через минуту он снова перестает работать.

Я создал ПЕРВИЧНЫЙ индекс для своей корзины и, если необходимо, любой другой требуемый глобальный вторичный индекс.

Я также установил ведра для образцов, предоставленные couchbase. Существуют те же проблемы.

Кто-нибудь знает, в чем может быть проблема?


person G.D. Singh    schedule 15.11.2016    source источник
comment
Можете ли вы описать, что ИМЕННО вы пытаетесь сделать? Например, поделитесь своим кодом, поделитесь своими индексами (не первичными)   -  person Roi Katz    schedule 15.11.2016
comment
Итак, у меня есть ведро с именем clients. Каждый документ JSON в clients имеет логическое свойство transaction_successful. Вот что я сделал: CREATE PRIMARY INDEX on clients USING GSI Затем я просто пытаюсь запустить: SELECT id, email FROM clients where transaction_successful = false LIMIT 100 OFFSET 200 Затем я продолжаю увеличивать offset на limit в цикле, чтобы получить записи.   -  person G.D. Singh    schedule 15.11.2016
comment
Можете ли вы без проблем запросить образцы сегментов Couchbase?   -  person geraldss    schedule 15.11.2016
comment
Нет. Та же проблема с баками для проб.   -  person G.D. Singh    schedule 17.11.2016
comment
У меня такая же проблема. Кластер Couchbase в Azure. Конечная точка N1QL очень нестабильна. Через минуту он возвращает результат запроса через секунду или две. В следующий раз он просто сидит и больше не возвращается. Вы нашли здесь какое-нибудь разрешение?   -  person jdolan    schedule 25.07.2017


Ответы (1)


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

  1. Создайте специальный индекс покрытия, например:

    создать индекс inx_id_email для клиентов (id, email), где transaction_successful = false

  2. используйте ключевое слово объяснения, чтобы проверить, использует ли ваш запрос индекс. (explain SELECT id, email FROM clients where transaction_successful = false LIMIT 100 OFFSET 200)

Я считаю, что ваши узлы запроса / индекса используются слишком часто, потому что вы фактически выполняете эквивалент первичного сканирования в реляционных базах данных.

person Roi Katz    schedule 15.11.2016
comment
Использование ЦП и ОЗУ на узле запросов и индекса очень низкое. (На самом деле ничего, я просто тестирую). Я создал GSI или любой требуемый индекс. Объяснение показывает, что запрос использует индекс. Странно то, что запрос иногда работает, но в большинстве случаев просто зависает. - person G.D. Singh; 17.11.2016
comment
кроме использования ЦП и ОЗУ. что вы видите в статистике сервера под индексом? (в WebUI) - person Roi Katz; 17.11.2016