Por defecto, Solaris viene con una configuración muy conservadora, y por lo tanto, debemos ajustar algunos parámetros, entre ellos, el número máximo de descriptores de ficheros.
Este parámetro antiguamente había que declararlo en el archivo </etc/system> y requería un reboot del sistema para que se aplicara.
En Solaris 10 esto ya no es necesrio y se puede gestionar con una propiedad del proceso <process.max-file-descriptor> y, por lo tanto gestionable en caliente. Ya hemos visto en post anteriores como Gestionar Dinámicamente Parámetros en Solaris 10, pues bien, ahora vamos a ver otra aplicación del comando <prctl>
Para aquellos que tengaís Solaris 9 u 8, para poder definir el número máximo de descriptores permitidos hay que declarar las siguientes variables en el archivo de configuración </etc/system>. Recordar que este archivo es muy importante, y si tiene errores sintácticos Solaris NO Arrancará, así que editarlo con cuidado y recordar que los comentarios empiezan con "*" y no con "#"
Solaris 8 y 9
# vi /etc/systemSolaris 10
*
* rflim_fd_max
* Limite de descriptores maximos de archivos abiertos
* por defecto: 1024
*
set rlim_fd_max=16384
*
* rlim_fd_cur
* por defecto: 64
*
set rlim_fd_cur=8192
:wq
Ya hemos dicho que en Solaris 10 debemos utilizar <prctl> para gestionar estos parámetros dinámicos del sistema -si queremos podemos incluirlos en el /etc/system-
# echo $$Hemos utilizado el comando <prctl> para modificar el valor de descriptores máximos permitidos al proceso 3433. Ahora bien, si queremos que la configuración se aplique a un conjunto de procesos, utilizaremos un project e incluiremos la propiedad en la definición.
3433
# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 8192
pipe size (512 bytes, -p) 10
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 29980
virtual memory (kbytes, -v) unlimited
# prctl -r -t privileged -n process.max-file-descriptor -v 1024 -i process 3433
# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 10
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 29980
virtual memory (kbytes, -v) unlimited
Por ejemplo, para permitir que el usuario postgres tenga 1024 descriptores de archivos, haremos lo siguiente -asumimos que existe un project para el grupo postgres:
# projmod -sK 'process.max-file-descriptor=(priv,1024,deny)' group.postgres
# su - postgres
POSTGRES VERSION: 8.4
POSTGRES HOME : /u01/app/postgres/8.4/db
PGDATA : /var/postgres/8.4/data
PGARCH : 64
$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 10
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 29980
virtual memory (kbytes, -v) unlimited
Conclusión
Hemos visto como editando el archivo </etc/system> se puede tunear muchos límites que en la versión inicial de Solaris debemos mejorar. Además si todavía eres de los que no ven claro los project y la configuración dinámica aquí tienes una excusa nueva para, poco a poco, enamorarte de esta funcionalidad.
Referencias
No hay comentarios:
Publicar un comentario