Actualmente ulimit -n
muestra 10000
. Quiero aumentarlo a 40000
. He editado "/etc/sysctl.conf" y he puesto fs.file-max=40000
. También he editado /etc/security/limits.conf
y actualizado valores duros y blandos. Pero todavía 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
He intentado todas las formas posibles como se indica 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 límites máximos de archivos abiertos alcanzados.
sudo ulimit -n 40000
Respuestas:
Estoy usando Debian pero esta solución debería funcionar bien con Ubuntu.
Tienes que agregar una línea en el script neo4j-service .
Esto es lo que he hecho:
Tenga en cuenta que estoy usando la versión 2.0 Enterprise Edition. Espero que esto te ayudará.
fuente
/etc/security/limits.conf
y/etc/pam.d/common-session*
/etc/init.d/neo4j-service
archivo y Martin Larivière tiene razón, insertaruname -n 40000
resuelve el problema. No conozco las diferencias entre Ubuntu Server y Ubuntu, así que quizás también tengas razón, agrego esto solo para aclarar que lo que escribió Martin resuelve el problema con Ubuntu 14.04 simple.common-session-*
truco no funcionará, porque neo4j-service se basa en PAMstart-stop-daemon
ystart-stop-daemon
no aprovecha en absoluto. De hecho, la única solución es agregar unaulimit -n xxx
llamada explícita en el script de inicio.Lo que está haciendo no funcionará para el usuario root. Tal vez esté ejecutando sus servicios como root y, por lo tanto, no pueda ver el cambio.
Para aumentar el ulimit para el usuario root, debe reemplazar el
*
por root.*
no aplica para usuarios root. El descanso es el mismo que tú. Lo volveré a citar aquí.Agregue las siguientes líneas al archivo:
/etc/security/limits.conf
Y luego agregue la siguiente línea en el archivo:
/etc/pam.d/common-session
Esto actualizará el ulimit para el usuario root. Como se mencionó en los comentarios, es posible que ni siquiera tenga que reiniciar para ver el cambio.
fuente
start-stop-daemon
, elcommon-session-*
truco no funcionará, porquestart-stop-daemon
no aprovecha PAM en absoluto. No hay otra forma que agregar unaulimit -n xxx
llamada explícita en algún lugar del script de inicio antes de que se inicie el servicio.1) Verifique el
file-max
límite de sysctl :Si el límite es inferior al valor deseado, abra
sysctl.conf
y agregue esta línea al final del archivo:Finalmente, aplique
sysctl
límites:2) Edite
/etc/security/limits.conf
y agregue debajo lo mencionadoEstos límites no se aplicarán al
root
usuario, si desea cambiar losroot
límites, debe hacerlo explícitamente:3) Reinicie el sistema o agregue la siguiente línea al final de
/etc/pam.d/common-session
:Cierre la sesión y vuelva a iniciar sesión.
4) Verifique los límites suaves:
y límites duros:
Referencia: http://ithubinfo.blogspot.in/2013/07/how-to-increase-ulimit-open-file-and.html
fuente
gnome-session-quit
Tenía 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 cerrar la sesión por completo de la sesión ssh y luego volver a iniciarla.Quería establecer el límite para un usuario específico que ejecuta un servicio, pero parece que estaba obteniendo el límite que se estableció para el usuario con el que estaba iniciando sesión. A continuación, se muestra un ejemplo para mostrar cómo se establece ulimit en función del usuario autenticado y no del usuario efectivo:
Puede utilizar un
*
para especificar un aumento para todos los usuarios. Si reinicio el servicio como el usuario que inicié sesión, y agregoulimit -n
al script de inicio, veo que los límites del usuario de inicio de sesión inicial están establecidos. No he tenido la oportunidad de verificar qué límites de usuario se utilizan durante el arranque del sistema o de determinar cuál es el límite real de nofile del servicio que estoy ejecutando (que se inicia con start-stop-daemon).Hay 2 enfoques que están funcionando por ahora:
fuente
whoami
), primero obtengo 1024, luego 65536 (para root), luego 65536 para usuario. Pero el primero fue el mismo usuario. ¿Tiene una explicación para esto? Estoy desconcertado/etc/sysctl.conf
->fs.file-max = 1000000
debería arreglarlo globalmente para todos los usuarios, tampoco ningún resultado. Es como si un proceso me estuviera ignorando. Cambio de usuario a root a usuario, como usted describió, de root -> user usingsu - my_user_name
. Lo que indica que el sistema sabe lo que debe usar para ese usuario, pero no ...Puede modificar el script de inicio para
neo4j
hacer unulimit -n 40000
antes de ejecutarneo4j
.Sin embargo, no puedo evitar sentir que estás ladrando al árbol equivocado. ¿
neo4j
Necesita legítimamente más de 10,000 descriptores de archivos abiertos? Esto suena muy parecido a un error enneo4j
la forma en que lo está utilizando. Trataría de abordar eso.fuente
neo4j
usarneo4j start
. ¿Dónde puedo encontrar el script de inicio?ulimit -n 40000
antesneo4j start
Tengo muchos problemas para 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 de stackexchange (ambos funcionan, pero esta versión actualiza permanentemente la configuración del sistema, en lugar de temporalmente):
fuente
Intente ejecutar este comando, creará un
*_limits.conf
archivo bajo/etc/security/limits.d
Simplemente salga de la terminal e inicie sesión nuevamente y verifique
ulimit -n
que se establecerá para * usuariosfuente
tl; dr establece tanto los límites suaves como los estrictos
Estoy seguro de que funciona según lo previsto, pero lo agregaré aquí por si acaso. Para completar, el límite se establece aquí (consulte la sintaxis a continuación): /etc/security/limits.conf
y activado con lo siguiente en /etc/pam.d/common-session:
Si establece solo el límite estricto,
ulimit -a
mostrará el predeterminado (1024): Si establece solo el límite suave, el límite ulimit -a mostrará (4096)Si los configura, ambos
ulimit -a
mostrarán el límite suave (hasta el límite estricto, por supuesto)fuente
Lo hice asi
fuente
Configuración ULIMIT:
Hacer entrada debajo
Inicio de configuración de Ulimit para el usuario del sitio web
Haga la entrada a continuación para TODOS LOS USUARIOS
Configuración de Ulimit para cada usuario
Después de modificar el archivo, el usuario debe cerrar la sesión y volver a iniciar sesión para ver los nuevos valores.
fuente