¿Cómo establecer ulimits para mongod?

8

¿Cómo configuro ulimits para el mongodproceso / usuario en CentOS?

He leído la documentación oficial pero no proporciona instrucciones específicas del sistema operativo.

  • Necesito configurar ulimit -u 64000y necesito que esto persista después de reiniciar.

  • Estoy ejecutando CentOS 5.5, aunque pronto actualizaré a 6.5.

  • Prefiero no modificar ninguna secuencia de comandos instalada por el administrador de paquetes

Tim
fuente

Respuestas:

12

Modifique /etc/security/limits.confcon lo que necesita. Ejemplo:

user soft nproc 64000

Esta línea establecerá el número de procesadores ( -u) en 64000 para "usuario". Los límites suave / duro pueden ser los mismos (suave permite picos mientras que duro evita el desove).

Nathan C
fuente
Gracias, pero después de hacer esto y reiniciar mongod cat /proc/{pid}/limitsno muestra ningún cambio. ¿Se necesita hacer algo adicional para garantizar que se lea la conf?
Tim
1
Sí, reinicie el servidor. Lo establece el núcleo.
Nathan C
7

La versión más nueva del script de inicio mongod de CentOS (/etc/init.d/mongod) tiene la configuración predeterminada integrada en la opción de inicio:

start()
{
  # Recommended ulimit values for mongod or mongos
  # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
  #
  ulimit -f unlimited
  ulimit -t unlimited
  ulimit -v unlimited
  ulimit -n 64000
  ulimit -m unlimited
  ulimit -u 32000

  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}

Si desea cambiar los valores y no modificar el script, copie el script en /etc/init.d/mongod-custom, luego edite el script de inicio personalizado, establezca sus valores y cambie chkconfig para usar mongod-custom en lugar de mongod.

thaspius
fuente
6

Para agregar a la respuesta de thaspius, los límites parecen estar establecidos como él describe en el guión de inicio, pero todavía recibía la advertencia

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

Esto parece sugerir que el límite de archivos definido en el script de inicio había tenido efecto, pero no el límite de procesos. También siguiendo la respuesta de Nathan C y agregando

mongod soft nproc 64000

a /etc/security/limits.d/90-nproc.confy reiniciar el sistema resuelve el problema.

Si alguien puede arrojar luz sobre por qué eso era necesario a pesar de tener los valores en el script de inicio mongodb, ¡soy todo oídos!

usuario2050789
fuente
lo mismo aquí, por qué se ignoró la configuración "nproc" es un misterio para mí.
Ostati
1

Haga este cambio en el /etc/security/limits.confarchivo. Establezca los límites rígidos y flexibles, y debería ser bueno.

Juan
fuente
Recomiendo usar archivos dentro en /etc/security/limits.d/lugar de jugar limits.confdirectamente con el archivo
Joshua Grigonis
1

Para que el cambio sea persistente, debe editar la secuencia de comandos init, por ejemplo, en Red Hat 7, la secuencia de comandos init tiene la siguiente línea:

LimitNOFILE=64000

Tienes que agregar el siguiente:

LimitNPROC=32000

Y luego reinicie el servicio.

Espero que esto ayude.

Ángel Orosa Rodríguez
fuente