linux - ¿Cómo aumentar el límite máximo de archivos abiertos(ulimit) de Neo4j en Ubuntu?
(10)
Actualmente ulimit -n
muestra 10000
. Quiero aumentarlo 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.
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
Configuración ULIMIT:
- Iniciar sesión por root
- vi security / limits.conf
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
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
Después de modificar el archivo, el usuario debe cerrar sesión y volver a iniciar sesión para ver los nuevos valores.
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:
- agregue un ajuste ulimit al guión de inicio, justo antes de iniciar-detener-daemon.
- comodín o configuraciones de ulimit más extensas en el archivo de seguridad.
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á.
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
Lo hice así
echo "NEO4J_ULIMIT_NOFILE=50000" >> neo4j
mv neo4j /etc/default/
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 usuario root, debe reemplazar *
por root. *
no se aplica al 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.
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
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 sintaxis 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)