33 votos

donde se fijan los valores predeterminados de ulimit. (linux, centos)

Tengo dos servidores con CentOS 5 casi idénticas especificaciones. Cuando yo inicio de sesión y hacer ulimit -u, en una máquina llego unlimited, y en el otro llego 77824.

Cuando ejecuto un cron como:

* * * * * ulimit -u > ulimit.txt

Puedo obtener los mismos resultados (unlimited, 77824).

Estoy tratando de determinar dónde estos se establecen de modo que yo pueda alterar. No están establecidos en cualquiera de mis perfiles (.bashrc, /etc/profile, etc.). Estos no afectan cron de todos modos), ni en /etc/security/limits.conf (que está vacía).

He buscado en google y ido tan lejos como para hacer grep -Ir 77824 /, pero nada ha resultado hasta el momento. No entiendo cómo estas máquinas podría haber llegado preset con límites diferentes.

De hecho, estoy preguntando no para estas máquinas, pero para un diferente (CentOS 6) de la máquina que tiene un límite de 1024, que es demasiado pequeño. Necesito ejecutar el cron puestos de trabajo con un límite superior y la única manera que sé cómo poner esa es la tarea en sí. Eso está bien, pero yo prefiero que establece el sistema de ancho, así que no es tan chapucero.

Gracias por la ayuda. Este parece que debería ser fácil (NO).


EDITAR -- RESUELTO

Ok, me di cuenta de esto. Parece ser un problema ya sea con CentOS 6 o tal vez mi configuración de la máquina. En el CentOS 5 configuración, puedo establecer en /etc/security/limits.conf:

* - nproc unlimited

y que efectivamente la actualización de las cuentas y cron límites. Sin embargo, esto no funciona en mi CentOS 6 cuadro. En su lugar, que debo hacer:

myname1 - nproc unlimited
myname2 - nproc unlimited
...

Y las cosas funcionan como se esperaba. Tal vez el UID de la especificación de las obras, pero el carácter comodín (*) definitivamente NO aquí. Curiosamente, los comodines HACER el trabajo para el nofile límite.

Todavía me gustaría saber por donde los valores por defecto son en realidad proviene de, porque, de forma predeterminada, este archivo está vacío y no podía ver por qué me había diferentes valores para los dos CentOS cajas, que tenía un hardware idéntico y eran del mismo proveedor.

45voto

Totor Puntos 803

Estos "default" se aplican los límites por:

  • el kernel de Linux en tiempo de arranque (a la init proceso),
  • la herencia, de que el proceso padre de' los límites (en fork(2) de tiempo),
  • PAM cuando la sesión de usuario se abre (se puede reemplazar kernel/valores heredados),
  • el proceso en sí (se puede reemplazar PAM & kernel/valores heredados, vea setrlimit(2)).

Normal de los procesos de los usuarios pueden subir duro límites.

El kernel de Linux

En tiempo de arranque de Linux conjuntos de límites predeterminados a la init proceso, que luego son heredados por todos los demás (niños) de los procesos. Para ver estos límites: cat /proc/1/limits.

Por ejemplo, el kernel predeterminado para el número máximo de descriptores de archivo (ulimit -n) fue 1024/1024 (blando, duro), y ha sido elevado a 1024/4096 en Linux 2.6.39.

El valor predeterminado número máximo de procesos que estamos hablando está limitada a aproximadamente:

Total RAM in kB / 128

para las arquitecturas x86 (al menos), pero las distribuciones a veces cambiar el kernel por defecto de los valores, así que revise su código fuente del kernel para kernel/fork.c, fork_init(). El "número de procesos de" límite se llama RLIMIT_NPROC allí.

PAM

Generalmente, para garantizar la autenticación de usuario al iniciar la sesión, PAM se utiliza junto con algunos módulos (ver /etc/pam.d/login).

En Debian, el módulo PAM responsable de la fijación de límites está aquí : /lib/security/pam_limits.so.

Esta biblioteca va a leer su configuración de /etc/security/limits.conf y /etc/security/limits.d/*.conf, pero incluso si los archivos están vacíos, pam_limits.por lo tanto, puede usar los valores codificados que se puede comprobar en el código fuente.

Por ejemplo, en Debian, la biblioteca ha sido parcheado para que por defecto, el número máximo de procesos (nproc) es ilimitado, y el número máximo de archivos (nofile) es 1024/1024:

  case RLIMIT_NOFILE:
      pl->limits[i].limit.rlim_cur = 1024;
      pl->limits[i].limit.rlim_max = 1024;

Así, comprobar su CentOS " PAM módulo de código fuente (buscar RLIMIT_NPROC).

Sin embargo, tenga en cuenta que muchos de los procesos no pasará a través de PAM (por lo general, si ellos no son lanzados por un usuario ha iniciado la sesión, como los demonios y tal vez cron jobs).

15voto

Tomas Puntos 211

De RHEL6 (CentOS6) "los procesos de usuario máximo" se establece en 1024 por defecto.
Puede cambiar este valor en el archivo:

/etc/security/limits.d/90-nproc.conf

Consulte https://bugzilla.redhat.com/show_bug.cgi?id=432903 si desea quejarse :)

3voto

Android Eve Puntos 545

¿Cuando revisó los límites, estabas usando el usuario root para hacerlo?

De la limits.conf manual:

Nota: no se aplican límites de grupo y comodín para el usuario root. Para establecer un límite para el usuario root, este campo debe contener la root literal username.

Usando nombres explícitos resolvería el problema en este caso.

2voto

c4f4t0r Puntos 1749

kernel/tenedor.c

max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);

En la versión de 64 bits de tamaño de la Rosca es de 8192

 grep -i total /proc/meminfo 
 MemTotal:        8069352 kB

Ahora me aparece el total en kb en la división por 4

 echo $((8069352/4))
 2017338

Ahora tengo el número de páginas

 echo $((8 * 8192 / 4096)
 16

El resultado final es

echo $((2017338/16))
126083

De esta manera tienes el hilo-max parámetro y el valor predeterminado de usuario proceso de límite es la mitad de

init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

ulimit desde la root

ulimit -u
62932
echo $((62932*2))
125864 #we are near

1voto

Puddingfox Puntos 442

Parece ser /etc/security/limits.conf

http://SS64.com/Bash/Limits.conf.html

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: