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.
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.
echo 'Memoria usada: ' . round(memory_get_usage() / 1024,1) . ' KB de ' . round(memory_get_usage(1) / 1024,1) . ' KB';
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?
Conexión a internet más rápida y veloz.
Hace ya varios días, recibía una llamada telefónica de mi pingüino operador, desde la central principal de Emezeta. Me comentaban que mi servidor compartido (alojado en Dreamhost) estaba echando humo y que la docena de pingüinos de la central no daban abasto debido a las peticiones que estaba recibiendo la web, así que en ciertos momentos colocaban una foto estática de la sala de juntas:
Es por ello que, junto a mi pingüino CEO, hemos decidido contratar un VPS (basado en Linux-VServer), el nuevo servicio de Dreamhost: Dreamhost Private Servers.
Cotufa Server es nuestro nuevo servidor. Una potente máquina virtual-dedicada, a cargo de la dirección de 20 pingüinos que intentarán que los lectores de Emezeta no tengan ningún problema al acceder al servidor.
Fuera bromas.
Hace algunos días, comencé a observar que mi página mostraba algunos errores 500 (error interno del servidor) o 503 (servidor temporalmente no disponible). Estos errores son muy poco específicos, así que para saber exactamente la causa, nada más fácil que acceder al log de errores (normalmente error.log).
En mi caso, pude ver algo similar a lo siguiente:
access to / failed for 80.xxx.xx.xx, reason: Client exceeded concurrent connection limit of 20
El motivo de los errores era la concurrencia, es decir, ejecutar simultáneamente un cierto número de peticiones. Al parecer, Emezeta estaba superando un limite de 20 peticiones simultáneas, y en esos momentos el servidor mostraba un error.
Me puse en contacto con Dreamhost y me comentaron que el criterio de sus servidores compartidos era el de no permitir más de 20~30 peticiones concurrentes para garantizar el buen funcionamiento del servidor.
Me pareció razonable. Ya que el precio del servidor es bastante económico, no veía lógico el perjudicar a otros usuarios de mi servidor, así que muy amablemente me ofrecieron una invitación a su nuevo sistema VPS: Dreamhost Private Server, el cuál estoy empezando a utilizar y funciona muy bien.
No obstante, no todo iba a ser tan fácil. Ampliar los recursos del servidor, sin optimizar al máximo el consumo de CPU y memoria RAM sería un gasto superfluo de recursos. Así que, manos a la obra.
En el siguiente artículo explicare como reducir el consumo de CPU y memoria basándome en mis propias experiencias, por si le sirve de ayuda a alguien.
6 consultas efectuadas / Página generada en 0.035 segundos
Programado íntegramente por José Román (Manz) en XHTML y CSS estándar.
Sindicado bajo Feed RSS. Contenido bajo licencia Creative Commons
Estadísticas de visitas · Términos y condiciones · Contacto · Publicidad · Preguntas frecuentes (FAQ)