jueves, 17 de febrero de 2011

Evaluación de rendimiento - I - Herramientas

En 2010 dediqué gran tiempo al desarrollo de un Framework en PHP 5.3, fue una experiencia enriquecedora que disfruté mucho, ahora valoro mucho más el uso de un Framework como base de un desarrollo y me gustaría hacer una comparación propia, muy simple, para saber cuál usar y cuando usarlo.

Lo que me llamó más a atención, en esta primera búsqueda de información, es que todos usan el típico ejemplo "Hola Mundo" para las evaluaciones de rendimiento, todo se aclaró cuando encontré una charla sumamente interesante llamada "Simple is hard" de Rasmus Lerdorf (Creador de las 2 primeras versiones de PHP) en Drupalcon del año 2008 que se puede ver acá (aunque es un poco larga) o se pueden ver las diapositivas usadas acá.

Ahora las herramientas ...

Un servidor web:
Yo uso principalmente IIS 7.5 y será el que usaré en las pruebas de los Framewoks, pero por curiosidad instalé XAMPP 1.7.4.

Mi instalación de IIS tiene la configuración que se puede ver acá, pero en resumen:
PHP 5.3.5 Non Thread Safety en modo FastCGI, Xdebug 2.1.0, APC 3.1.7

La instalación de XAMPP es realmente muy simple, al terminar los pasos del instalador:
PHP 5.3.5 Thread Safety en modo Apache 2.0 Handler, Xdebug 2.1.0, APC 3.1.6, Apache 2.2.17

Tras luchar un por casi una hora con los archivos php.ini y las extensiones de Apache e IIS logré tener las mismas en los dos servidores web, aunque algunas no tienen la misma versión (como en el caso de APC).

Por comodidad configuré el Apache de XAMPP para que escuche el puesto 8080, así puedo tener a IIS en el 80, apunté el directorio root de los dos servidores a la misma carpeta.
En cuanto a las cabeceras enviadas por los dos servidores no hay forma de que sean iguales así que las hice lo más parecidas posible agregando la sentencia "ServerTokens Minimal" en Apache y verificando que la cabecera "KeepAlive" esté activa pero con valor ilimitado para timeout y maxrequests.
En Apache se deben agregar estos valores:

  • KeepAlive On
  • MaxKeepAliveRequests 0
  • KeepAliveTimeout 0

En IIS tras ejecutar el comando "inetmgr" y en la opción "Encabezados de respuesta HTTP" clic en "Establecer encabezados comunes..." de la columna de la derecha asegurándose de que solo esté seleccionada la opción "Habilitar HTTP keep-alive".

  Una aplicación que haga el trabajo: Hay muchas aplicaciones que generan estadísticas de respuesta de un servidor web, las más conocidas y con las que intenté fueron:
  1. SIEGE 2.70: Que no puedo usar pues no corre en Windows.
  2. WCAT 6.3: Que tras unas horas de estudiarlo me pareció muy complejo.
  3. AB: Simple de usar y viene con la instalación de XAMPP que ya instalé.
Un archivo "Hola Mundo": Es necesario tener un HTML báse que pueda ser creado por cualquier Framework con el contenido exacto, por el momento voy a definir este de 10 líneas y 319 bytes:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hola Mundo</title>
</head>
<body>
Hola Mundo
</body>
</html>

Con las herramientas listas ya puedo crear un entorno de pruebas como en el siguiente post.

No hay comentarios:

Publicar un comentario