Apache 2 MPM-Worker, eficiencia al máximo

Escrito por:
Fecha: 2013-04-28 21:16:35 00:00

Introducción

Dado que dos o tres veces algún artículo mío fuera publicado en digg, slashdot y Hackernews, y en dos de esas oportunidades mi sitio (Que corría en Drupal) cayó ante la carga del tráfico.

Esto me llevo a buscar constantemente la mejor forma de hacer un blog lo más eficiente posible. Existe muchas formas de hacer esto y usando Wordpress, una de las formas más publicitadas es la de utilizar Nginx y PHP-FPM. Dado que Wordpress, Drupal y muchas otras plataformas para blogs o "CMS" están diseñados para trabajar sobre Apache, lo mejor es correrlos de esa manera. Pero Apache tiene un problema, por cada solicitud levanta un proceso esto lo hace poco eficiente cuando recibe una gran cantidad de solicitudes al mismo tiempo. Nginx por otro lado puede manejar cientos o miles de solicitudes con solo unos cuantos procesos.

Ahora bien, Apache puede configurarse para trabajar de modo parecido a Nginx, y seguirás teniendo las ventajas de Apache, como ser .htaccess, configuraciones estándares y no tener que recurrir a configuraciones especiales para lograr que tu aplicación que fuera diseñada para Apache, pueda funcionar en Nginx.

Apache y el modo MPM-Worker

Cuando configuras Apache para trabajar en modo MPM-Worker en lugar del prefork que usa por defecto, no levantará un proceso por cada solicitud que reciba. Trabajando de este modo tal como lo hace Nginx.

El problema es que cuando Apache esta configurado en modo MPM-Worker no puede ser utilizado el modulo mod_php, es decir Apache ya no puede procesar archivos PHP, algo a lo que estamos ya acostumbrados con Nginx y la solución es la misma, usar un interprete externo para PHP, en este caso PHP-FPM.

Cual modo utilizar

La verdad no veo ningún motivo para no utilizar el modulo multiproceso en modo Worker en lugar de Prefork.

Lo he probado y es mucho más eficiente, y en este modo un blog o alguna otra aplicación que utilice Apache puede trabajar con alto tráfico.

En los siguientes dos artículos en este blog, estaré mostrando como configurar Apache para funcionar en modo Worker con PHP-FPM. Para completar la configuración instalare MariaDB en lugar de MySQL, y finalmente Wordpress encima para mostrar la funcionalidad de la configuración.