Emezeta.com

¿Cuánta memoria RAM consume mi servidor?


Después del manual para reducir el consumo de CPU y memoria RAM del servidor, seguimos con los consejos para optimizar nuestro servidor. Uno de los aspectos que más debemos cuidar es el uso de memoria RAM que hacemos a medida que se ejecutan nuestros scripts.

memoria RAM

Cuando los visitantes acceden a nuestras páginas, la ejecución de los scripts PHP (o Perl, Ruby...), las consultas SQL a la base de datos, la optimización de la programación y otros factores ayudan o perjudican en el uso de memoria RAM. La mayoría de las veces no tenemos ni idea de cuanta memoria estamos utilizando en cada petición de página, pero vamos a averiguarlo.

PHP 5.2.0


echo 'Memoria usada: ' . round(memory_get_usage() / 1024,1) . ' KB de ' . round(memory_get_usage(1) / 1024,1) . ' KB';

PHP 4.3.2


echo 'Memoria usada: ' . round(memory_get_usage() / 1024,1) . ' KB';

Con este código PHP (sólo en PHP 4.3.2 o superior) obtendremos la cantidad de memoria que está consumiendo por petición nuestro blog o página web. Pero puede ocurrir que nuestro sistema no esté compilado con esta opción, para ello podemos utilizar la siguiente función. Obviamente, necesitaremos

function memory_get_usage() {
     $pid = getmypid();
     exec("ps -o rss -p $pid", $output);
     return $output[1] *1024;
}

En muchos casos nos resultaría más útil guardar en una variable (recuerda, no debes usar echo al principio si envías cabeceras, obtendrás un error) el consumo de memoria que hay al principio del script:

$mem_inicio = round(memory_get_usage() / 1024,1);

Así, más tarde lo podríamos imprimir por pantalla para compararlo con el consumo final y conocer el verdadero gasto del script, ya que el consumo final puede estar debido a razones «anteriores» a la petición del script, como el uso del mod_rewrite, gestión de los procesos del apache y muchos otros criterios.

Date cuenta que esta es una buena forma de ver cuánto está consumiendo por petición nuestro Wordpress (o cualquier otro CMS). ¿Y tu blog cuánto consume por petición?