2014-11-11 1 views
2

Каков правильный путь для сравнения redis-cluster (недавно выпущенный в 3.0 RC). AFAIK, утилита redis-benchmark попадает только в один узел кластера.Сравнительный анализ Redis-кластера

EDIT: (Детали) Мой единственный экземпляр redis без какой-либо кластеризации дает пропускную способность ~ 90 k set/get операций, но установка кластера не удалась с большим временем.

НАСТРОЙКА 1: 8-ядерная машина с кластером из 3 мастеров + 3 ведомых (все на одной машине) Я также запускаю 3 утилиты бенчмаркинга на одной машине. Пропускная способность падает до 25 k на каждом ведущем узле.

Это заставляет меня думать, что я, возможно, запускаю слишком много процессов для количества ядер на моей машине.

Установка 2: Я обновляю установку, чтобы иметь 3 мастера и 0 подчиненных устройств. Интересно, что это не помогает делу либо, а пропускная способность еще 25 к на каждой машине

командной бенчмаркинг, что я бегу это: Redis-тест -p 7000 -n -t 10000000 набор, получить

Любая помощь на этом фронте будет оценена по достоинству.

+0

Здравствуйте, вы говорите о «Redis Cluster», или просто о кластере? – antirez

+0

@antirez, я не уверен в различии, но я использую redis 2.9.101 и используя эту http://redis.io/topics/cluster-tutorial setup. –

+0

@ Рауль. Вы видели этот тест над Redis Cluster от Redis Lab: http://highscalability.com/blog/2014/8/27/the-12m-opssec-redis-cloud-cluster-single-server-unbenchmark. html – Maziyar

ответ

-11

Обновление этой темы с помощью собственного ответа, чтобы не оставить ответ, похороненный под комментариями. При тестировании кластера необходимо позаботиться о распространении утилиты «redis-benchmark». Запуск их всех с одного и того же компьютера и, что еще хуже, с той же машины, на которой работает redis-кластер, - хороший способ снизить пропускную способность. Запуск «redis-benchmark» с другой машины решил проблему пропускной способности для меня. Кроме того, как указывал Антирез, нужно отправить правильные ключи каждому узлу, чтобы вы не имели дело с ошибками 2/3.

+2

Ницца, вы ответили на свой вопрос, используя ответы от других, а затем приняли свой собственный ответ. Плохой тон... – portlandrock

2

Во-первых, мне не ясно, что вы на самом деле сравниваете несколько мастеров кластера Redis с вашим описанием. Вы заявляете: «Команда бенчмаркинга, которую я запускаю: redis-benchmark -p 7000 -n 10000000 -t set, get». Это будет фактически проверять только один мастер кластера Redis, особенно тот, который находится на порту 7000. Если вы хотите сравнить другие серверы, вы должны указывать разные номера портов при повторном тестировании нескольких раз (используя опцию -p).

Теперь, даже если вы выполняете разные команды, чтобы попасть на разные главные серверы для вашего кластера, примерно 2/3 команд, которые вы выполняете, приведут к ошибкам вместо обычного выполнения команды просто потому, что команда redis-benchmark отправка команд на сервер кластера, и что сервер кластеров не обязательно содержит осколки для ключей, которые работают.

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

+0

Да, я использую 3 команды. Каждый удар по другому хозяину. –

+0

Вы по-прежнему получаете только 1/3 ваших команд, выполняемых правильно и полностью, 2/3 будут возвращать ошибки из-за работы с неправильным осколком. – Josiah

+0

Но тогда, когда я запускаю ту же настройку и запускаю бенчмаркинг только на одном порту, я получаю пропускную способность 90 к, что совпадает с запуском одного экземпляра. Как это происходит? –

6

Как сказал Йосия, вы получаете ошибки 2/3. Таким образом, чтобы правильно измерить, определите ключ, который, безусловно, находится в каждом узле (просто подключитесь с помощью redis-cli и используйте GET/SET для принудительного форматирования имен). Затем используйте redis-benchmark, используя ключ, который вы нашли, например, в узле A, в качестве хэш-тега, чтобы генерировать только ключи, которые будут хешировать к этому узлу. Так что вы можете сделать:

redis-benchmark -r 100000 -n 1000000 set 'key{your_hash_tag}:__rand_int__' __rand_int__ 

Таким образом, вы будете генерировать различные 100k случайных ключей с именами, которые будут хэш узла тестируемыми. В приведенном выше примере your_hash_tag - это просто ключевое имя, которое вы нашли в тестируемом узле.

 Смежные вопросы

  • Нет связанных вопросов^_^