В последние дни я немного играл с риаком. Начальная настройка была проще, чем я думал. Теперь у меня есть кластер из 3 узлов, все узлы, работающие на одном и том же виртуальном диске, для тестирования.
Признаюсь, аппаратные настройки моей виртуальной машины сильно ухудшены (1 ЦП, 512 МБ ОЗУ), но все же я весьма удивлен медленной производительностью riak.
Карта Уменьшить
Играя немного с уменьшением карты, у меня было около 2000 объектов в одном ведре, каждый размером примерно 1 - 2 тыс., Как json. Я использовал эту функцию карты:
function(value, keyData, arg) {
var data = Riak.mapValuesJson(value)[0];
if (data.displayname.indexOf("max") !== -1) return [data];
return [];
}
И для выполнения запроса http, возвращающего свой результат, потребовалось более 2 секунд, не считая времени, которое потребовалось моему клиентскому коду для десериализации результатов из json. Удаление 2 из 3 узлов, казалось, немного улучшило производительность чуть ниже 2 секунд, но это все еще кажется мне очень медленным.
Этого и следовало ожидать? Объекты были не такими большими в байтах, и 2000 объектов в одном сегменте тоже невелики.
Вставить
Пакетная вставка около 60 000 объектов того же размера, что и выше, заняла довольно много времени и фактически не работала.
Мой скрипт, который вставил объекты в риак, умер около 40.000 или около того и сказал, что больше не может подключаться к узлу риака. В журналах riak я нашел сообщение об ошибке, которое указывало, что узлу не хватило памяти и он умер.
Вопрос
Это действительно мой первый выстрел в риак, так что есть определенная вероятность, что я что-то напортачил.
- Могу ли я изменить настройки?
- Аппаратные настройки слишком ограничены?
- Может быть, лимитирующим фактором здесь является клиентская библиотека PHP, которую я использовал для взаимодействия с riak?
- Запускать все узлы на одном физическом компьютере довольно глупо, но если это проблема - как я могу лучше протестировать производительность riak ?
- Снижение карты действительно так медленно? Я читал о снижении производительности, которое карта уменьшает в списке рассылки riak, но если Map Reduce работает медленно, как вы должны выполнять «запросы» к данным, необходимым почти в реальном времени? Я знаю, что риак не такой быстрый, как редис.
Мне бы очень помогло, если бы кто-то с большим опытом в риаке помог мне с некоторыми из этих вопросов.