¿Alguna vez has tenido problemas con tu servidor VPS? ¿Poca memoria RAM o exceso de uso de CPU? ¿Tu servidor esta virtualizado con OpenVZ o Virtuozzo? Sí así es, el siguiente comando te será de mucha utilidad para descubrir los principales problemas de memoria, CPU, etc…
Sólo tenemos que acceder a nuestro servidor mediante ssh y escribir:
cat /proc/user_beancounters
y comprobar la columna «failcnt» donde vendrán indicados los procesos muertos o demonios en OpenVZ. En función de nuestro proveedor de hosting veremos cual es el máximo que podremos alcanzar en cada de uno de los siguientes parámetros. Cuando lo superemos, el proceso dejara de funcionar (Apache, Mysql, CSF etc…)
En esta imagen se puede ver que para el parámetro privvmpages se ha superado su valor y se han producido fallos (en la columna failcnt), lo que provoco que algún programa del servidor dejara de funcionar. Se trata de un parámetro acumulativo, es decir, no se pone a cero pasado un determinado tiempo (solo sí reiniciamos completamente nuestro servidor), por lo que sería conveniente apuntar el valor de la columna «failcnt» para ver si ha aumentado.
Las columnas importantes son: «Maxheld» (Maximo alcanzado) «Barrier» y «Limit». Si superamos «Barrier» las cosas pueden empezar a ir mal. Si alcanzamos «Limit»… Bueno, algo dejara de funcionar en nuestro servidor…
Veamos que significa cada parametro:
Parámetros primarios
- avnumproc – El número medio de procesos y subprocesos .
- numproc – El número máximo de procesos y subprocesos que se pueden crear.
- numtcpsock – El número de sockets TCP. Este parámetro limita el número de conexiones TCP y , por tanto , el número de clientes que se pueden manejar en paralelo.
- numothersock – El número de conexiones que no sean TCP (por ejemplo UDP).
- vmguarpages – Asignación de memoria garantizada. Por encima de la barrera, la asignación de memoria adicional no está garantizada y puede fallar.
Parámetros Secundarios
- kmemsize – El tamaño de la memoria del kernel no intercambiable.
- tcpsndbuf – El tamaño total de buffers de envío para sockets TCP.
- tcprcvbuf – El tamaño total de buffers de recepción de sockets TCP.
- othersockbuf – El tamaño total de búferes de dominio UNIX, UDP, y otros protocolos de datagramas.
- dgramrcvbuf – El tamaño total de buffers de recepción de UDP y otros protocolos de datagramas .
- oomguarpages – Memoria garantizada.
Parámetros auxiliares
- lockedpages – Memoria que no permite ser cambiada.
- shmpages – El tamaño total de memoria compartida.
- privvmpages – El tamaño de la memoria privada (o potencialmente privada) asignada por una aplicación.
- numfile – El número de archivos abiertos por todos los procesos.
- numflock – El número de bloqueos de archivos creados por todos los procesos.
- numpty – El número de pseudo-terminales, como por ejemplo una sesión SSH.
- numsiginfo – El número de estructuras SIGINFO.
- dcachesize – El tamaño total de estructuras dentry e inode bloqueadas en la memoria.
- physpages – El tamaño total de memoria RAM utilizada los procesos.
- numiptent – El número de entradas filtradas de paquetes IP.
Los valores que nos muestran las columnas pueden dejarnos tan panchos… ¿Cuanta memoria hemos usado? ¿Que servicios tenemos que tunear y ajustar para reducir el consumo en la columna «Held»?
Para transformar esos valores a mb, existen varios scripts que nos van a hacer la vida más fácil. Para arreglar los problemas, probablemente tengamos que tunear nuestra configuración de Apache o Mysql… Pero eso es otra historia.