sql >> Base de Datos >  >> NoSQL >> Redis

redis bgsave falló porque la bifurcación no puede asignar memoria

Más específicamente, de las preguntas frecuentes de Redis

El esquema de ahorro en segundo plano de Redis se basa en la semántica de bifurcación de copia en escritura en los sistemas operativos modernos:bifurcaciones de Redis (crea un proceso secundario) que es una copia exacta del padre. El proceso secundario vuelca la base de datos en el disco y finalmente sale. En teoría, el hijo debería usar tanta memoria como el padre siendo una copia, pero en realidad, gracias a la semántica de copia en escritura implementada por la mayoría de los sistemas operativos modernos, el proceso padre e hijo compartirán las páginas de memoria comunes. Una página se duplicará solo cuando cambie en la secundaria o en la principal. Dado que, en teoría, todas las páginas pueden cambiar mientras se guarda el proceso secundario, Linux no puede saber de antemano cuánta memoria ocupará el elemento secundario, por lo que si la configuración overcommit_memory se establece en cero, la bifurcación fallará a menos que haya tanta RAM libre como necesario para duplicar realmente todas las páginas de la memoria principal, con el resultado de que si tiene un conjunto de datos de Redis de 3 GB y solo 2 GB de memoria libre, fallará.

Establecer overcommit_memory en 1 indica que Linux se relaja y realiza la bifurcación de una manera más optimista, y esto es de hecho lo que desea para Redis.

Redis no necesita tanta memoria como el sistema operativo cree que necesita para escribir en el disco, por lo que puede fallar preventivamente en la bifurcación.