Consejos útiles sobre FastCGI (FPM)

Voy a platicar hoy un poco sobre PHP-FPM y las situaciones en las cuales debemos los distintos modos,

  • pm = dynamic:
    • el número de procesos secundarios se establece dinámicamente según las siguientes directivas: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
  • pm = ondemand:
    • los procesos se generan a pedido (cuando se solicitan, en lugar de dinámicos, donde pm.start_servers se inician cuando se inicia el servicio.
  • pm = static:
    • el número de procesos secundarios lo fija pm.max_children.

En el caso de este blog, estoy ejecutando ondemand dado que busco simplemente utilizar memoria cuando alguien llama al blog y evitar tener que hacer configuraciones constantes sobre el mismo y cuando tengo que realizar copias de seguridad simplemente tengo memoria y cpu suficiente para que se ejecuten.

Con un valor Static la memoria y cpu esta asignadas desde el primer momento, por cuanto este tipo de configuración la quisiéramos utilizar si utilizamos ngx_http_upstream_module (Nginx) o mod_proxy_fcgi (Apache), podemos debatir sobre este tema, pero tiene lógica.

Mientras que si tenemos todo en uno (no separamos nuestros servicios) así como ondemand, podemos tener dynamic activo el cual nos da el beneficio de tener X cantidad de procesos en ejecución pero puede requerir una configuración constante, sobre todo si no conocemos el tipo de aplicación que ejecutamos.

Para finalizar, conocer las aplicaciones que alojamos nos da la ventaja de poder configurar los valores de forma adecuada pero nada le ganara a ondemand dado que si nuestro entorno aloja múltiples instancias (pools) nos ahorramos el tiempo y tendremos mas recursos para otros pools cuando nos haga falta.