Redis (1.2.6): медленные запросы - PullRequest
       14

Redis (1.2.6): медленные запросы

2 голосов
/ 04 августа 2010

Мы используем Redis 1.2.6 в производственной среде. В Redis есть 161804 клавиши. Машина имеет 2 ГБ оперативной памяти.

Проблема:

Выборочные запросы к Redis занимают в среднем 0,02 сек. Но иногда они занимают 1,5-2,0 секунды, я думаю, что каждый раз, когда Redis сохраняет измененные ключи на диске.

Одна странная вещь, которую я заметил до и после перезапуска Redis - это:

Перед перезапуском "changes_since_last_save" меняется слишком быстро и достигает 3000+ (через 5 минут) Но после перезапуска «changes_since_last_save» остается ниже 20 или около того.

Redis статистика перед перезапуском:

{:bgrewriteaof_in_progress=>"0", :arch_bits=>"64", :used_memory=>"53288487", :total_connections_received=>"586171", :multiplexing_api=>"epoll", :used_memory_human=>"50.82M", :total_commands_processed=>"54714152", :uptime_in_seconds=>"1629606", :changes_since_last_save=>"3142", :role=>"master", :uptime_in_days=>"18", :bgsave_in_progress=>"0", :db0=>"keys=161863,expires=10614", :connected_clients=>"13", :last_save_time=>"1280912841", :redis_version=>"1.2.6", :connected_slaves=>"1"}

Статистика Redis после перезапуска:

{:used_memory_human=>"49.92M", :total_commands_processed=>"6012", :uptime_in_seconds=>"1872", :changes_since_last_save=>"2", :role=>"master", :uptime_in_days=>"0", :bgsave_in_progress=>"0", :db0=>"keys=161823,expires=10464", :connected_clients=>"13", :last_save_time=>"1280917477", :redis_version=>"1.2.6", :connected_slaves=>"1", :bgrewriteaof_in_progress=>"0", :arch_bits=>"64", :used_memory=>"52341658", :total_connections_received=>"252", :multiplexing_api=>"epoll"}

Не уверен, что здесь происходит не так.

Заранее спасибо.

Сунил

1 Ответ

3 голосов
/ 26 августа 2010

По умолчанию Redis настроен на временную загрузку всех данных на диск в зависимости от количества ключей, измененных за определенный промежуток времени (см. стандартная конфигурация ).

Другой вариант - использовать файл только для добавления , который является более легким, но требует некоторого обслуживания - вам нужно периодически запускать BGREWRITEAOF, чтобы ваш журнал не получить слишком большой. Подробнее об этом есть файл конфигурации Redis .

Как говорит Тобиас, вам следует как можно быстрее переключиться на 2.0, поскольку он быстрее и во многих случаях использует меньше памяти, чем 1.2.6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...