1. Introducción
El siguiente artículo explica la relación entre estas dos variables de configuración de idle timeout pero que operan en ámbitos distintos (una dentro del motor php-fpm y otra dentro de apache2).
Resumiendo, de manera general, usarás la declaración php_fpm_idle_timeout dentro de las opciones del sitio web, o usando la declaración manual -idle-timeout dentro de la directiva FastCgiExternalServer.
2. Sobre la opción pm.process_idle_timeout
Esta opción afecta al idle interno del propio proceso php-fpm.
Este idle se activa cuando el propio proceso php fpm no está haciendo nada.
En este caso, si se está procesando una base de datos, vía phpmyadmin, esta opción no nos ayudará ya que no se activará: en efecto, el proceso php está activo y procesando.
Por tanto, el idle no se activará.
3. Opción Core-Admin #WebhostingManagement php_fpm_idle_timeout
Esta opción es independiente a la anterior y opera dentro del apache2
Esta opción configura el idle timeout percibido por parte del apache2 sobre la actividad del php-fpm.
De ahí que diga:
4. Comparativa de ambas opciones
[ Apache2 ] -- (activa timeout vía php_fpm_idel_time :
-idle-timeout, dentro de FastCgiExternalServer ):
--> [php-fpm master]
--> [php-fpm child] ( pm.process_idle_timeout: se activa si este child no
hace nada durante los segundos indicados)
5. Ignorar [pm.process_idle_timeout] usar [php_fpm_idle_timeout] (o FactCgiExternalServer)
La opción que tenemos que usar es php_fpm_idle_timeout (a través de las opciones de core-admin).
Alternativamente, se puede usar la declaración manual (-idle-timeout) dentro de la declaración FactCgiExternalServer del sitio afectado si no está bajo core-admin:
# Default PHP FPM pool for www-data user
FastCgiExternalServer /usr/lib/cgi-bin/core-admin-php-fpm-default-9999-8443-fcgi -idle-timeout 36000 -socket /var/run/core-admin-php-default-fpm-001-mysql.sock -pass-header Authorization
6. Cómo resolver este caso de timeout en el phpmyadmin para instalaciones con motor php-fpm
Hay que editar el fichero /etc/apache2/sites-enabled/001-mysql.conf para añadir manualmente la declaración -idle-timeout 36000:
Así, la declaración completa quedaría como sigue:
# Default PHP FPM pool for www-data
FastCgiExternalServer /usr/lib/cgi-bin/core-admin-php-fpm-default-9999-8443-fcgi -idle-timeout 36000 -socket /var/run/core-admin-php-default-fpm-001-mysql.sock -pass-header Authorization
Tras esto, reiniciar:
>> /etc/init.d/apache2 restart
No hace falta reiniciar el php-fpm ya que es una opción que opera a nivel Apache2
NOTA: También hay que ajustar el max_execution_time del php para que esté alineado con este valor. De lo contrario fallá con errores extraños.
7. Actualización de Core-Admin para PhpMyAdmin
Core-Admin ya viene actualizado para que las instalaciones nuevas dejen el phpmyadmin con la opción de -idle-timeout a 36000 (10 horas).
De sobra para cualquier importado de base de datos grandes.