¿Cómo aumentar el límite máximo de archivos abiertos en Ubuntu 18.04?

16

He corrido ulimit -n 65536, agregué las siguientes líneas a /etc/security/limits.conf:

*    soft nofile 65536
*    hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536

Y añadido session required pam_limits.soa ambos:

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

Y fs.file-max = 65536a /etc/sysctl.d/60-file-max.conf.

Aún así, después de reiniciar y ejecutar ulimit -nmi sesión, solo obtengo 4096 (antes era 1024).

¿Qué me estoy perdiendo?

Alix Axel
fuente

Respuestas:

12

Del manual:

 -n     The maximum number of open file descriptors (most
        systems do not allow this value to be set)

systemd tiene una opción para esto:

$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=

Pero esto también es solo para la configuración gráfica del usuario. Elimine el #y puede configurarlo en 65536.

Comentario de Daniel Fernández :

DefaultLimitNOFILE=65536 

también podría ser necesario en

/etc/systemd/user.conf 
Rinzwind
fuente
1
Olvidé mencionar que yo también hice eso.
Alix Axel
1
@AlixAxel: esta respuesta funcionó para mí, además de * - nofile 16384(solo estaba intentando 16384) en /etc/security/limits.conf.
Doug Smythies
El 65k es una suposición y se esperaría que haya límites codificados en el lado superior de lo que está permitido. Es posible que desee comenzar más abajo como Doug indicó;)
Rinzwind
¿Qué quiere decir con "Pero esto también es solo para la configuración gráfica del usuario"?
sinan
1
La configuración de notas DefaultLimitNOFILE=65536también podría ser necesaria en/etc/systemd/user.conf
Daniel Fernández el
2

Ubuntu 18.04 paso a paso

Espero que todo esto ayude, bastante tiempo, pero funciona (con prueba)

Encontré este hilo mientras instalaba MongoDb en Ubuntu 18.04

https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/

Como puede ver, es bastante antiguo, sin embargo, me funciona.

Aquí esta lo que hice.

  1. Configuración recomendada de MongoDb ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (tamaño del archivo): ilimitado
    • -t (tiempo de CPU): ilimitado
    • -v (memoria virtual): ilimitado [1]
    • -l (tamaño de memoria bloqueada): ilimitado
    • -n (archivos abiertos): 64000
    • -m (tamaño de memoria): ilimitado [1] [2]
    • -u (procesos / hilos): 64000
  2. Verifica mis límites actuales

ubuntu @ isdb-stage: ~ $ ulimit -a
tamaño del archivo central (bloques, -c) 0
tamaño seg de datos (kbytes, -d) ilimitado
prioridad de programación (-e) 0
tamaño de archivo (bloques, -f) ilimitado
señales pendientes (-i) 7873
memoria bloqueada máxima (kbytes, -l) 16384
tamaño máximo de memoria (kbytes, -m) ilimitado
abrir archivos (-n) 1024
tamaño de tubería (512 bytes, -p) 8
Colas de mensajes POSIX (bytes, -q) 819200
prioridad en tiempo real (-r) 0
tamaño de pila (kbytes, -s) 8192
tiempo de CPU (segundos, -t) ilimitado
max procesos de usuario (-u) 7873
memoria virtual (kbytes, -v) ilimitada
bloqueos de archivos (-x) ilimitados
  1. Tome nota de lo que requiere cambiar

    • tamaño de memoria bloqueada , debe establecerse en ilimitado.
    • abrir archivos , debe establecerse en 64000
    • procesos / subprocesos * , debe establecerse en 64000
  2. ¿Qué dice ubuntu sobre cómo cambiar estos límites?

$ man limits.conf

NOMBRE
   limits.conf - archivo de configuración para el módulo pam_limits

DESCRIPCIÓN
   El módulo pam_limits.so aplica límites de límite, prioridad agradable y límite de sesiones de inicio de sesión simultáneas a las sesiones de inicio de sesión de usuario. Esta descripción de la sintaxis del archivo de configuración se aplica a

       /etc/security/limits.conf y los archivos * .conf en 
       /etc/security/limits.d directorio.
  1. Parece bastante claro, edite el archivo /etc/security/limits.conf. Ok, vamos a resolverlo ...

Aquí está el comienzo de ese archivo, y mira que incluso tiene instrucciones, por supuesto, ¡recuerda que esto es de código abierto escrito por los buenos! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    # Cada línea describe un límite para un usuario en el formulario:                                                                   
    # #                                                                                
    #Dónde:                                                               
    # puede ser:
    # - un nombre de usuario

(Eche un vistazo al archivo usted mismo si desea más detalles)
  1. Finalmente haz los cambios. Como MongoDb se ejecuta como grupo mongodb y usuario, sería una buena idea aumentar solo los límites de los usuarios. He visto '*' usado aquí y allá, para mí eso es un riesgo de seguridad. Le da a todos y cada uno en el servidor estos límites, que podrían usarse para maximizar su servidor. Así que hagámoslos solo para usuarios de mongodb.

Aquí están mis cambios: -

mongodb soft memlock ilimitado
mongodb hard memlock ilimitado
mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000
  1. Finalmente, finalmente, recuerde esto en la entrada man limits.conf.

    limits.conf - archivo de configuración para el módulo pam_limits

    Mejor asegúrese de que el módulo pam_limits esté cargado para que todo esto limite las cosas. Para hacer esto, edite /etc/pam.d/common-session. Por supuesto, esto también está en la página del manual.

sudo vi /etc/pam.d/common-session

# Agregue esto para asegurarse de que pam_limits.so esté cargado.
se requiere sesión pam_limits.so

Un reinicio mostrará los límites (para el usuario mongodb) que se han aplicado. Si los aplicó usando '*' en su lugar, puede verificar sin tener que cambiar al usuario mongodb. Solo ejecuta este comando.

$ ulimit -a

tamaño del archivo central (bloques, -c) 0
tamaño seg de datos (kbytes, -d) ilimitado
prioridad de programación (-e) 0
tamaño de archivo (bloques, -f) ilimitado
señales pendientes (-i) 7873
memoria bloqueada máxima (kbytes, -l) ilimitada
tamaño máximo de memoria (kbytes, -m) ilimitado
abrir archivos (-n) 64000
tamaño de tubería (512 bytes, -p) 8
Colas de mensajes POSIX (bytes, -q) 819200
prioridad en tiempo real (-r) 0
tamaño de pila (kbytes, -s) 8192
tiempo de CPU (segundos, -t) ilimitado
procesos de usuario máx. (-u) 64000
memoria virtual (kbytes, -v) ilimitada
bloqueos de archivos (-x) ilimitados

Como puede ver, lubbly jubbly todo establecido a los límites que queríamos.

englishPete
fuente