2013-02-19 10 views
9

memoria BGSAVE Sto cercando di scoprire che cosa un ambiente sicuro per i 'maxmemory' sarebbe nella seguente situazione:Redis Scelta maxmemory dimensioni e l'uso di

  • write-pesante applicazione
  • 8GB di RAM
  • supponiamo altri processi occupano circa 1 GB
  • questo significa che l'utilizzo della memoria processo Redis non può mai superare i 7 GB
  • doppie utilizzo della memoria su ogni evento BGSAVE, perché:

Nel Redis docs seguente si dice circa l'utilizzo della memoria crescente sugli eventi BGSAVE:

Se si utilizza Redis in un'applicazione molto write-pesante, durante il salvataggio di un file RDB su disco o riscrittura il log AOF Redis può utilizzare fino a 2 volte la memoria normalmente utilizzata.

  • il limite maxmemory è approssimativamente confrontato 'used_memory' da redis-CLI INFO (come è spiegato here) e non richiede altra memoria utilizzata dal redis conto

Sono corretto che questo significa che l'impostazione maxmemory dovrebbe, in questa situazione, essere impostata non superiore a (8 GB - 1 GB)/2 = 3,5 GB?

In tal caso, creerò una richiesta di pull per i documenti redis in modo da riflettere più chiaramente questo aspetto.

risposta

3

In questo caso, raccomanderei un limite di 3 GB. Sì, i documenti sono praticamente corretti e l'esecuzione di un bgsave raddoppierà per un breve periodo i requisiti di memoria. Tuttavia, preferisco riservare 2 GB di memoria per il sistema, o al massimo per un master persistente il 40% della memoria massima.

Si indica di avere un'applicazione molto scriteriata. In questo caso, raccomando vivamente un secondo server di eseguire le operazioni di salvataggio. Ho trovato durante le scritture in alto e un bgsave il tempo di risposta al cliente (s) può diventare alto. Non è Redis di per sé a causare, ma la risposta del server stesso. Questo è particolarmente vero per le macchine virtuali. In questa configurazione si utilizza il secondo server per eseguire lo slave dal primario e salvare su disco mentre il primo rimane reattivo.