Pregunta ¿Cómo aumentar el límite máximo de archivos abiertos (ulimit) de Neo4j en Ubuntu?


Actualmente ulimit -n muestra 10000. Quiero aumentarlo a 40000. He editado "/etc/sysctl.conf" y puse fs.file-max=40000. También he editado /etc/security/limits.conf y actualizado los valores duros y blandos. Pero aún muestra ulimit 10000. Después de hacer todos estos cambios, reinicié mi computadora portátil. Tengo acceso a la contraseña de root.

usr_name@usr_name-lap:/etc$ /sbin/sysctl fs.file-max
fs.file-max = 500000

Se agregaron las siguientes líneas en /etc/security/limits.conf -

*     soft    nofile          40000
*     hard    nofile          40000

También agregué la siguiente línea en /etc/pam.d/su-

session    required   pam_limits.so

Lo he intentado de todas las formas posibles, tal como se ha dado en otros foros, pero puedo alcanzar un límite máximo de 10000, no más allá de eso. ¿Cuál puede ser el problema?

Estoy haciendo este cambio porque neo4j lanza el límite máximo de archivos abiertos alcanzado error.


76
2018-02-02 19:58


origen


Respuestas:


Estoy usando Debian, pero esta solución debería funcionar bien con Ubuntu.
Tienes que agregar una línea en el servicio neo4j guión.
Esto es lo que hice:

nano /etc/init.d/neo4j-service
Añadir « ulimit -n 40000 »Justo antes de la línea start-stop-daemon en el do_start section

Tenga en cuenta que estoy usando la versión 2.0 Enterprise Edition. Espero que esto te ayudará.


8
2018-02-03 19:31



Lo que estás haciendo no funcionará para el usuario raíz. Tal vez está ejecutando sus servicios como root y, por lo tanto, no puede ver el cambio.

Para aumentar el ulimit para el usuario root, debe reemplazar el * por root * no se aplica para usuario root. El resto es lo mismo que tú. Volveré a citarlo aquí.

Agregue las siguientes líneas al archivo: /etc/security/limits.conf

root soft  nofile 40000

root hard  nofile 40000

Y luego agregue la siguiente línea en el archivo: /etc/pam.d/common-session

session required pam_limits.so

Esto actualizará el ulimit para el usuario root. Como se menciona en los comentarios, es posible que ni siquiera tenga que reiniciar para ver el cambio.


82
2018-06-21 08:32



1) Verificar sysctl file-max límite:

$ cat /proc/sys/fs/file-max

Si el límite es menor que su valor deseado, abra el sysctl.conf y agregue esta línea al final del archivo:

fs.file-max = 65536

Finalmente, aplicar sysctl límites:

$ sysctl -p 

2) Editar /etc/security/limits.conf y agregue debajo de lo mencionado

* soft     nproc          65535    
* hard     nproc          65535   
* soft     nofile         65535   
* hard     nofile         65535

Estos límites no se aplicarán a root usuario, si quiere cambiar root límites tienes que hacer eso explícitamente:

root soft     nofile         65535   
root hard     nofile         65535
...

3) Reinicie el sistema o agregue la siguiente línea hasta el final de /etc/pam.d/common-session:

session required pam_limits.so

Salir e iniciar sesión de nuevo.

4) Verifique los límites suaves:

$ ulimit -a

y límites duros:

$ ulimit -Ha
....

open files                      (-n) 65535

Referencia: http://ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html


62
2017-07-17 06:37



Estaba teniendo el mismo problema y lo hice funcionar agregando entradas a /etc/security/limits.d/90-somefile.conf. Tenga en cuenta que para ver cómo funcionan los límites, tuve que desconectarme por completo de la sesión ssh y luego volver a iniciar sesión.

Quería establecer el límite para un usuario específico que ejecuta un servicio, pero parece que estaba obteniendo el límite establecido para el usuario con el que estaba ingresando. Aquí hay un ejemplo para mostrar cómo se establece el ulimit en función del usuario autenticado y no del usuario efectivo:

$ sudo cat /etc/security/limits.d/90-nofiles.conf
loginuser    soft    nofile   10240
loginuser    hard    nofile   10240
root         soft    nofile   10241
root         hard    nofile   10241
serviceuser  soft    nofile   10242
serviceuser  hard    nofile   10242

$ whoami
loginuser
$ ulimit -n
10240
$ sudo -i
# ulimit -n
10240    # loginuser's limit
# su - serviceuser
$ ulimit -n
10240    # still loginuser's limit.

Puedes usar un * para especificar un aumento para todos los usuarios. Si reinicio el servicio como el usuario que inicié sesión, y agrego ulimit -n al script de inicio, veo que los límites iniciales del usuario de inicio de sesión están en su lugar. No he tenido la oportunidad de verificar qué límites del usuario se utilizan durante el arranque del sistema o de determinar cuál es el límite nofile real del servicio que estoy ejecutando (que se inicia con start-stop-daemon).

Hay 2 enfoques que funcionan por ahora:

  1. agregue un ajuste ulimit al guión de inicio, justo antes de iniciar-detener-daemon.
  2. comodín o configuraciones de ulimit más extensas en el archivo de seguridad.

3
2017-10-03 09:03



Puedes alterar el guión de inicio para neo4j para hacer un ulimit -n 40000 antes de correr neo4j.

Sin embargo, no puedo evitar sentir que estás ladrando al árbol equivocado. Hace neo4j legítimamente necesita más de 10.000 descriptores de archivos abiertos Esto suena muy parecido a un error en neo4j o la forma en que lo estás usando. Intentaría abordar eso.


2
2018-02-02 23:31



Tengo muchos problemas para hacer que esto funcione.

El uso de lo siguiente le permite actualizarlo independientemente de su permiso de usuario.

sudo sysctl -w fs.inotify.max_user_watches=100000

Editar

Acabo de ver esto de otro usuario también en otro sitio stackexchange (ambos funcionan, pero esta versión permanentemente actualiza la configuración del sistema, en lugar de temporalmente):

echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; 
sudo sysctl -p

2
2017-07-10 15:41



Intenta ejecutar este comando, creará un *_limits.conf archivo debajo /etc/security/limits.d

echo "* soft nofile 102400" > /etc/security/limits.d/*_limits.conf && echo "* hard nofile 102400" >> /etc/security/limits.d/*_limits.conf

Simplemente salga de la terminal e inicie sesión nuevamente y verifique por ulimit -n se establecerá para * usuarios


2
2017-07-29 07:36



tl; dr establece los límites suaves y duros

Estoy seguro de que está funcionando como estaba previsto, pero lo agregaré aquí por las dudas. Para completar, el límite se establece aquí (ver a continuación la sintaxis): /etc/security/limits.conf

some_user       soft    nofile          60000
some_user       hard    nofile          60000

y activado con lo siguiente en /etc/pam.d/common-session:

session required pam_limits.so

Si establece solo el límite estricto, ulimit -a mostrará el valor predeterminado (1024): Si configura solo el límite suave, se mostrará ulimit -a (4096)

Si los configuras a ambos ulimit -a mostrará el límite suave (hasta el límite estricto del curso)


2
2017-09-12 00:51



Lo hice así

echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/

2
2017-07-23 14:35



Configuración ULIMIT:

  1. Iniciar sesión por root
  2. vi security / limits.conf
  3. Hacer a continuación la entrada

    Inicio de la configuración de Ulimit para sitio web usuario

    website   soft   nofile    8192
    website   hard   nofile    8192
    website   soft   nproc    4096
    website   hard   nproc    8192
    website   soft   core    unlimited
    website   hard   core    unlimited
    
  4. Haga la entrada siguiente para TODO EL USUARIO

    Configuración de Ulimit para cada usuario

    *   soft   nofile    8192
    *   hard   nofile    8192
    *   soft   nproc    4096
    *   hard   nproc    8192
    *   soft   core    unlimited
    *   hard   core    unlimited
    
  5. Después de modificar el archivo, el usuario debe cerrar sesión y volver a iniciar sesión para ver los nuevos valores.


1
2017-09-09 07:00