2010-10-03 5 views
4

basé sur cette capture d'écran: http://www.dropmocks.com/mBvx1 (lien mort)Échange de Redis?

-t Redis besoin de deux fois la mémoire je pense que cela fait? Je crois qu'il engendre un autre processus pour enregistrer sur le disque, cela signifie-t-il réellement copie la mémoire et je devrais toujours supposer si j'ai 16 Go de RAM 8 est le maximum pour un seul processus Redis?

Répondre

-3

Je ne pense pas que Redis devrait prendre ~ 8GB. Vous pourriez vouloir passer à 2.X parce que je pense que vous pourriez avoir une fuite de mémoire. Mais, revenons à votre question, je pense que Redis crée un nouveau processus pour enregistrer sur le disque, mais Redis est stocké en mémoire. Il enregistre sur disque en cas de panne de courant entraînant la perte de toutes les données de la RAM

10

Redis peut facilement prendre jusqu'à 8 Go en fonction de vos données. Cela étant dit, le "double souvenir" dont vous parlez est un faux-fuyant: il fait de la fourche et "copie" de la mémoire, mais en raison de la copie sur la technologie d'écriture, la mémoire est partagée entre deux processus. processus fait un changement à un octet particulier de la mémoire. Ainsi, lors de l'enregistrement sur le disque, seules les clés qui changent lors de la sauvegarde entraînent une allocation de mémoire supplémentaire entre les deux processus. Tout le reste est partagé. J'espère que cela t'aides.

+0

Je suppose que cela ne vaut que pour les plates-formes * nix? Je suppose que le double usage de la mémoire peut être vrai pour l'exécution de Redis sur Windows? –

-1

Si Redis a 8 Go de mémoire, il n'utilisera pas plus que cela. Cependant, pendant la sauvegarde, fork() fera un nouveau "redis" et copiera toutes les données - par ex. 8 Go de plus Comme il ne peut pas tenir dans la mémoire, il l'échange sur le fichier d'échange (par exemple, le disque). Une fois la sauvegarde terminée, la mémoire sera libre.

J'ai remarqué cela sur mon serveur où beaucoup de processus sphinx fonctionnaient et 2 serveurs redis fonctionnant tous les deux avec 4 Go et sauvegardés se produisaient dans le même temps exact.

http://redis4you.com/articles.php?id=006&name=Redis+swap+issue+while+save

+1

il ne fait pas de copie octet par octet de l'image de la mémoire de processus lors d'une sauvegarde en arrière-plan. Voir: http://redis.io/topics/faq "Le schéma de sauvegarde en arrière-plan de Redis repose sur la sémantique de copie-écriture de fork dans les systèmes d'exploitation modernes ..." – Kevin