¿Chpst respeta la configuración de ulimit?

¿Chpst respeta la configuración de ulimit?

Actualmente estamos experimentando problemas con un servidor basado en JBoss en una plataforma Linux; efectivamente, nos estamos quedando sin identificadores de archivos disponibles dentro del proceso y el servidor falla.

Hemos configurado ulimit para permitir 10000 identificadores de archivos abiertos y el servidor falla constantemente cuando hay muchos menos identificadores de archivos abiertos.

Lo único que he notado es que nuestros scripts de inicio usan chpst, y noté que chpst le permite establecer límites de archivo/proceso/memoria como argumentos. ¿Alguien sabe si chpst respeta el ulimit del sistema existente si no se establecen comandos explícitos o si utiliza sus propios valores predeterminados internos? Si es así, ¿dónde puedo encontrarlos?

gracias

Respuesta1

chpst ni siquiera respeta lo que usted presenta como argumentos. El código fuente es realmente difícil de leer, pero strace lo confirma:

execve("/usr/sbin/chpst", ["chpst", "-o", "10000", "/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0
...
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=4*1024, rlim_max=4*1024}) = 0
execve("/bin/sh", ["/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0
...

Yo lo evitaría.

Respuesta2

No puedo agregar comentarios a Olivier Tharan, e incluso si se trata de una pregunta antigua, creo que no está mal corregir las afirmaciones incorrectas (especialmente si la afirmación es relativamente reciente).

En su rastro, getrlimit dice que el límite máximo estricto es 4096 y le pide a chpst que establezca el límite flexible en 10000. chpst lo hace, pero como se documenta engestión de límites.conf, los límites suaves no pueden exceder los límites estrictos, que son aplicados por el kernel y el usuario root. Lo único que se podría decir al respecto es que tal vez chpst debería imprimir una advertencia, eso es todo. Ciertamente no "lo evitaría".

Tenga en cuenta que esto significa que el problema original podría no estar relacionado con chpst, sino con la configuración del sistema. chpst es sólo una herramienta para establecer límites arbitrarios a un único proceso, no es una herramienta para configurar kernels.

información relacionada