Apache se estaba ejecutando lentamente en la producción. Después de buscar respuestas durante un tiempo, finalmente fui al canal #apache IRC y los profesionales me hicieron verificar el modo apache con este comando:
sudo apachectl -V
y se alarmó al descubrir que Server MPM es prefork . Dijeron enfáticamente que NO USE PREFORK EN UN SERVIDOR DE PRODUCCIÓN. Como resultado, los paquetes de Ubuntu (¿presumiblemente heredados de Debian?) Insisten en ejecutar apache en modo prefork a pesar de que el método recomendado para ejecutar PHP con Apache recomienda claramente proxy_fcgi y php-fpm, luego fcgid y finalmente dice que no debería usar prefork:
¿Por qué no deberías usar mod_php con prefork mpm?
- mod_php se carga en cada proceso httpd todo el tiempo. Incluso cuando httpd está sirviendo contenido estático / no php, esa memoria está en uso.
- mod_php no es seguro para subprocesos y te obliga a seguir con el prefork mpm (multiproceso, sin subprocesos), que es la configuración más lenta posible
Esa página también contiene algunos detalles sobre PHP-FPM, pero esto parece un poco elaborado y poco claro y parece implicar una gran cantidad de configuración manual. Estoy decepcionado y sorprendido de que Ubuntu 16 no tenga una opción de paquete para el modo fastCGI o algo así.
Intenté cambiar apache al modo de evento usando a2enmod y cuando intenté disparar apache nuevamente, recibí un error:
Apache está ejecutando un MPM roscado, pero su módulo PHP no está compilado para ser seguro para subprocesos. Necesitas recompilar PHP
En cualquier caso, me preguntaba si alguien tenía algunas instrucciones mínimas, paso a paso, para que el modo FastCGI se ejecute en Ubuntu 16 con PHP 7.0 confiando lo más posible en los instaladores de paquetes. Actualmente estoy viendo muchas instrucciones vagas y mal explicadas, y me preocupa arruinar mi entorno de producción con malas decisiones.
Además, alguien debería agregar mpm-event como una opción de etiqueta. Eso es lo que recomendaron los chicos de #apache IRC.