2017-01-21 2 views
0

Я бегу с Cassandra 2.1.16. Мне нужно ограничить количество запросов в определенном ключевом пространстве в Cassandra, потому что приложение запускает запрос для этого ключевого пространства с интенсивным объемом памяти. Если их хватит на то же время, у Кассандры закончится куча.Невозможно получить RoundRobinScheduler для работы в Cassandra

Использование RoundRobinScheduler кажется идеальным решением для этого. Поэтому я включил его в cassandra.yaml и установил request_scheduler_options. Так что для моего примера ниже, я хочу, не более 2 запросов активен сразу для ключевого пространства под названием mykeyspace:

request_scheduler: org.apache.cassandra.scheduler.RoundRobinScheduler 
request_scheduler_options: 
    throttle_limit: 80 
    default_weight: 5 
    weights: mykeyspace: 2 
request_scheduler_id: keyspace 

Это не работает и не имеет никакого эффекта. Чтобы отладить это, я загрузил источник Cassandra и добавил сообщения журнала отладки ко всем методам в классе RoundRobinScheduler. Единственные зарегистрированные сообщения - это конструктор. Я не вижу сообщения журнала из других методов при выполнении запросов.

Неужели кому-то повезло с помощью RoundRobinScheduler? Возможно, я неправильно понял использование этого планировщика.

+0

Я не думаю, что это вам поможет. Дросселирование вашего экземпляра никогда не является хорошей идеей. Вы должны лучше разделить свои данные и ограничить запросы сканирования, поступающие от клиентов. Убедитесь, что вы не используете кеширование строк и т. Д. Также проверьте надгробные плиты. Не работайте вокруг базовой проблемы, это не будет легче, так как ваше приложение растет. Рассматривая свой вопрос, вы, похоже, знаете свой путь достаточно, чтобы проверить этот материал. –

ответ

0

Я обнаружил, что исходный код 2.1.16 Cassandra, что этот механизм ограничения скорости запроса применяется только к протоколу Thrift. Он не применяется к протоколу CQL3. Когда я запускал запрос через устаревшую команду-cli Cassandra (которая является интерпретатором Thrift), я вижу сообщения отладки, которые я использовал в классе RoundRobinScheduler.

Что я не знаю, если этот механизм ограничения скорости запроса с тех пор был адаптирован к CQL3. Мой проект использует относительно старый релиз 2.1. Параметры все еще содержатся в папке cassandra.yaml, распространенной в версии 3.9. Некоторое время мне придется скачать источник и посмотреть на себя.

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