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