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

Actualmente ulimit -n muestra 10000 . Quiero boostlo a 40000 . He editado “/etc/sysctl.conf” y puse fs.file-max=40000 . También /etc/security/limits.conf y actualicé los valores duros y blandos. Pero aún ulimit muestra 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 da 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 arroja un límite máximo de archivos abiertos.

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

nano /etc/init.d/neo4j-service
Agregue « ulimit -n 40000 » justo antes de la línea start-stop-daemon en la sección do_start

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

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 boost el ulimit para usuario root, debe reemplazar * por root. * no se aplica al usuario root. El rest 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.

1) Verifique el límite de sysctl file-max :

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

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

 fs.file-max = 65536 

Finalmente, aplique los límites de sysctl :

 $ sysctl -p 

2) Edite /etc/security/limits.conf y agregue debajo del mencionado

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

Estos límites no se aplicarán al usuario root , si desea cambiar root límites de root , debe hacerlo explícitamente:

 root soft nofile 65535 root hard nofile 65535 ... 

3) Reinicie el sistema o agregue la siguiente línea al 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

Estaba teniendo el mismo problema y lo puse a 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. 

Puede 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 guión 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.

Puedes alterar el script de inicio para que neo4j haga un ulimit -n 40000 antes de ejecutar neo4j .

Sin embargo, no puedo evitar sentir que estás ladrando al árbol equivocado. ¿ neo4j legítimamente neo4j 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á usando. Intentaría abordar eso.

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 actualiza permanentemente la configuración del sistema, en lugar de hacerlo temporalmente):

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

Intenta ejecutar este comando, creará un archivo *_limits.conf bajo /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 y vuelva a iniciar sesión y verifique por ulimit -n se configurará para * usuarios

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í (consulte la syntax a continuación): /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 ulimit -a , ulimit -a mostrará el valor predeterminado (1024): si establece solo el límite suave, se mostrará ulimit -a (4096)

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

Lo hice así

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

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 el usuario del sitio web

     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.