Java/Hector cassandra-client разная производительность на разных ОС

мы используем Cassandra на 5 узлах репликации 3 уже более года.

Текущая версия 1.2.12

Мы написали программу, удаляющую записи в Cassandra через hector/Java.

В старой ОС (OpenSuSE) производительность записи составляла около 2500 операций в секунду. Сейчас мы обновляем узлы до Ubuntu 12.04 LTS. (Cassandra не трогали, есть своя рейд-система). В связи с этим мы перемещаем программу удаления на другой узел с новой ОС. На этом узле производительность записи составляет около 70 ops/sec, что неприемлемо.

Мы используем один и тот же JRE и один и тот же программный код на обеих машинах.

/etc/security/limits.conf 

такие же.

Профилирование кода Java на медленных машинах говорит, что узкое место: org.apache.thrift.transport.TIOStreamTransport.read()

Кто-нибудь знает, есть ли какие-либо настройки ОС, которые замедляют работу cassandra? Спасибо за вашу помощь.


Обновление: (день 3)

  • Заметил, что на машинах с kernel 3.5 и ниже производительность в норме... продолжайте искать
  • машины с kernel 3.8 имеют плохую производительность

Обновление: (день 4)

«Подозрение на ОС/ядро» было неверным / теперь у меня есть 2 машины с Ubuntu с одинаковой версией ядра / одна быстрая, другая медленная

... нет брандмауэра ... проверка сети :P


Обновление: (день 5)

Я сделал несколько перекрестных тестов (соединив каждый узел друг с другом с помощью AllOneConsistencyLevelPolicy). У меня больше проблем с cassandra-клиентами, использующими Kernel 3.8+ связь с Cassandra-серверами kernel <=3.5.

  • От 3,8 до 3,8, где-то медленно, где-то быстро
  • От 3,8 до ‹3,5 медленно, немного быстро
  • ‹3,5 к любому другому - всегда быстро

Я понятия не имею, где искать дальше... мозговой штурм приветствуется;)


Все еще медленно... Просто соединения с localhost (всегда) быстрые. Наличие этого явления на двух разных кластерах в двух разных центрах обработки данных (также у двух разных провайдеров). Так что, скорее всего, это не имеет ничего общего с сетевой инфраструктурой.

Cassandras также имеет разные версии во втором центре обработки данных (2.0.6).

Так что я все еще думаю, что это какая-то проблема с ядром ... ни у кого больше не было этой проблемы?


Нашел ... мы запускаем cassandra как пользователь без полномочий root. В Ubuntu есть дополнительный «переключатель», который ограничивает количество открытых файлов. Это было после треда.

https://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user

Цитируйте: [...]

Вам также нужно отредактировать /etc/pam.d/common-session* и добавить в конец следующую строку:

session required pam_limits.so

[...]

сделал трюк.


person Josef Tember    schedule 17.01.2014    source источник
comment
Проверьте файловую систему на обеих ОС. Может быть, они разные.   -  person Sergey Morozov    schedule 17.01.2014
comment
Файловые системы одинаковые. cassandra находится на отдельном томе рейда, который не изменился при установке новой ОС. Когда я запускаю программу на узле 1 (старая ОС), она имеет высокую производительность, на узле 2 (новая ОС) она имеет низкую производительность.   -  person Josef Tember    schedule 17.01.2014


Ответы (1)


Убедитесь, что ваши лимиты ресурсов и конфигурация рейда одинаковы на обоих. Упреждающее чтение — это параметр, который часто неправильно настраивают; см. "setra" на этой странице: http://www.datastax.com/documentation/cassandra/2.0/webhelp/cassandra/install/installRecommendSettings.html

Специально для Ubuntu с Cassandra, работающей от имени пользователя без полномочий root:

Вам также необходимо отредактировать /etc/pam.d/common-session* и добавить в конец следующую строку:

session required pam_limits.so

ср. https://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user

person jbellis    schedule 18.01.2014
comment
Спасибо. Это хороший контрольный список для настройки cassandra. Я проверил настройки, и все, даже RAID-SA, выглядело нормально. Ну, может быть, мой вопрос был недостаточно точным. Проблема, похоже, не в кластере, а в Java-клиенте (Hector), который плохо работает на Ubuntu. Я улучшу свой вопрос к этой проблеме. - person Josef Tember; 20.01.2014