2010-08-04 5 views
2

Nous utilisons Redis 1.2.6 dans un environnement de production. Il y a 161804 clés en redis. La machine a 2 Go de RAM.Redis (1.2.6): Demandes lentes

Problème:

requêtes de sélection à Redis prennent 0,02 sec en moyenne. Mais parfois, ils prennent de 1,5 à 2,0 secondes, je pense que chaque fois que redis sauvegarder les touches modifiées sur le disque.

Une chose étrange, je remarqué avant et après le redémarrage du Redis est que:

Avant redémarrage « changes_since_last_save » changer trop vite et a été atteint 3000+ (en 5 minutes). Mais après le redémarrage "changes_since_last_save" reste inférieur à 20 ou plus.

Redis Statistiques avant redémarrage:

{: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 Statistiques après redémarrage:

{: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"} 

Je ne sais pas ce qui ne va pas ici.

Merci d'avance.

Sunil

+0

Vous n'avez fourni aucune information sur les commandes que vous utilisez ou quoi que ce soit sur votre configuration (réplication?). Mais vous devriez certainement essayer la version 2.0 RC, c'est plus rapide et beaucoup plus stable que la version 1.2 –

Répondre

3

Par défaut Redis est configuré pour vider toutes les données sur le disque de temps en temps en fonction de la quantité de clés qui a changé en un laps de temps (voir le default config).

Une autre option est d'utiliser le append-only file, qui est plus léger mais nécessite une certaine maintenance - vous devez exécuter BGREWRITEAOF de temps en temps pour que votre journal ne soit pas trop gros. Il y a plus sur le Redis config file à ce sujet. Comme le dit Tobias, vous devriez passer à la version 2.0 dès que vous le pouvez, car c'est plus rapide et, dans de nombreux cas, il utilise moins de mémoire que 1.2.6.