La
memoria RAM juega un papel muy importante en el funcionamiento de un
servidor web o
servidor de hosting
(y en cualquier ordenador normal). Es donde se guardan datos
importantes que van a volver a ser utilizados en breves. El acceso a la
memoria RAM es mucho más rápido que acceder al disco duro.
A la hora de
optimizar un servidor, es muy importante conocer la
memoria RAM utilizada y la memoria
RAM libre, sobretodo en
servidores Linux sin interfaz gráfica donde necesitamos revisar estos parámetros utilizando la
terminal de Linux.
En el caso de
servidores web Apache o Nginx, y en el caso de servidores de
bases de datos MySQL, conocer la
memoria RAM usada y la
memoria RAM libre
disponible para utilizar puede ser aún más importante, ya que es la
forma de conocer exactamente los recursos de los que disponemos para que
los servicios puedan funcionar. De hecho, estos datos (y algunos más)
son los que utiliza el
script MySQLTuner para sugerir parámetros de optimización de
MySQL y
MariaDB.
En este caso, aprenderemos a comprobar cuánta
memoria máxima tiene nuestro
sistema Linux y cuánta de ella es
memoria en uso, libre o cacheada.
Con el comando FREE podremos ver la
memoria disponible (libre):
El comando “free” nos da información muy básica y de manera muy concisa, de forma que podemos obtener los datos de
memoria RAM y
memoria virtual en uso sin complicarnos demasiado con qué proceso la está consumiendo:
|
total used free shared buffers cached
Mem: 2.0G 1.5G 470M 300M 0B 414M
-/+ buffers/cache: 1.1G 885M
Swap: 0B 0B 0B
|
En la información que nos devuelve el comando podemos ver la
memoria libre, usada, total y cacheada. Información muy útil en tiempo real para conocer el
estado real de la memoria en el servidor.
El siguiente comando es la versión más extensa del comando FREE, en el que tenemos el concepto de
memoria inactiva.
Este término se usa para hablar de memoria en uso pero no asignada a
ningún proceso, haciéndola a todos los efectos memoria libre:
Al ejecutar este comando con los parámetros mencionados, podremos obtener la siguiente información estructurada de esta manera:
|
2048 M total memory
1582 M used memory
1124 M active memory
406 M inactive memory
465 M free memory
0 M buffer memory
407 M swap cache
0 M total swap
0 M used swap
0 M free swap
|
Se pueden obtener resultados similares haciendo un cat al fichero
/proc/meminfo, aunque es menos configurable de esta manera y obtendremos la información de una forma mucho menos revisable:
Al
ejecutar el comando anterior, obtendremos la siguiente información
sobre la memoria RAM del servidor Linux de la siguiente manera:
Si utilizamos un
panel de control de hosting o de administración como
cPanel,
Plesk,
VestaCP o
Webmin o cualquier otro panel que aporte una
interfaz gráfica, podremos ver los datos de
memoria RAM utilizada y
memoria RAM libre y cacheada desde la interfaz, algo que nos facilitará mucho las cosas pero que
puede llegar a mostrarnos datos NO reales dependiendo de los periodos de actualización de los datos.
A la hora de
optimizar el uso de memoria en un servidor, debemos entender que la
memoria RAM está pensada para ser utilizada, no para estar “vacía”. Por lo tanto, solo debemos preocuparnos si nuestro
servidor Linux responde con errores por
sobreuso de memoria RAM,
pero en caso de que el servidor funcione bien y no tengamos caídas en
los servicios (web, bases de datos, correo, etc.), aunque se use el 100%
de la memoria RAM no es algo preocupante (a menos que estemos esperando
grandes picos de tráfico).