Optimización del proceso de configuración de la plantilla phpfcgid de VestaCP errores de agotamiento de múltiples memorias 500

Tras seleccionar la plantilla "phpfcgid" para el servicio web VestaCP , un gran número de procesos PHP-CGI agotaron rápidamente la memoria.

  • Básicamente me quedé sin memoria durante unas horas después de reiniciar el servidor.
  • El proceso PHP-CGI previamente inactivo no se elimina y un proceso ejecuta casi 1 subprocesos, consumiendo al menos 20M de memoria.

Usado en SSH htop comando (requiere instalación), puede ver este estado ▼

Tras seleccionar la plantilla "phpfcgid" para el servicio web VestaCP, la gran cantidad de procesos PHP-CGI agotó rápidamente la memoria.

Si recibe un mensaje de error "-bash: htop: comando no encontrado" cuando usa el comando htop, consulte este tutorial para encontrar la solución ▼

La gran cantidad de procesos PHP-CGI provocó que la memoria se agotara rápidamente. El problema radica en que VestaCP utiliza una configuración no optimizada en la plantilla phpfcgid de CentOS .

  • VestaCP en la plantilla phpfcgid, configure 1 proceso PHP-CGI para ejecutar hasta 20 procesos secundarios.

请 参阅 /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Línea 13 del archivo:

export PHP_FCGI_CHILDREN=20

Sin embargo, tal configuración viola la advertencia de Apache en la documentación de administración de subprocesos de PHP:

La gestión de procesos secundarios de PHP ( PHP_FCGI_CHILDREN ) siempre debe estar deshabilitada con mod_fcgid, que solo enrutará una solicitud a la vez a los procesos de la aplicación que haya generado; por lo tanto, los procesos secundarios creados por PHP no se utilizarán de forma efectiva. (Además, es posible que los procesos secundarios de PHP no se terminen correctamente). Por defecto, y con la variable de entorno configurada como PHP_FCGI_CHILDREN=0 , la gestión de procesos secundarios de PHP está deshabilitada.

Debido a que en el módulo mod_fcgid de Apache, el proceso PHP-CGI solo puede responder a una solicitud y ejecutarse a la vez, el proceso secundario PHP-CGI es muy ineficiente.

Por lo tanto, la configuración para la gestión de subprocesos de PHP debe desactivarse directamente ▼

PHP_FCGI_CHILDREN=0

Al mismo tiempo, si ya tiene un host virtual generado, debe modificar los archivos de configuración de todos los sitios web ▼

/home/用户名/web/域名/cgi-bin/fcgi-starter

Después de abrir el archivo de configuración de fcgi-starter, inserte lo siguiente ▼

export PHP_FCGI_CHILDREN=20

Modificado a ▼

export PHP_FCGI_CHILDREN=0
  • Después de la modificación, la gestión de subprocesos de PHP se desactivará en el modo mod_fcgid.
  • El proceso PHP-CGI ya no generará procesos secundarios, lo que puede ahorrar mucha memoria.

Además, VestaCP no establece un mecanismo de finalización para los procesos inactivos:

  • Todos los procesos PHP-CGI recién ejecutados seguirán utilizando la memoria hasta que se reinicie el sistema.

Para solucionar esto, simplemente agregue el archivo de configuración mod_fcgid /etc/httpd/conf.d/fcgid.conf Agregue la siguiente configuración en ▼

FcgidIdleTimeout 120
  • Configure Apache para eliminar automáticamente los procesos PHP-CGI que estén inactivos durante 2 minutos (120 segundos).

Una vez completada la configuración, reinicie el servicio Apache ▼

service httpd restart

Después de reiniciar el servicio, ya no se mostrarán los cientos de procesos PHP-CGI que se mostraban anteriormente en HTOP.

Normalmente, un único proceso PHP-CGI para un único usuario de Vesta CP consume entre 30 y 40 MB de memoria, lo cual es más que suficiente para un host Linux .

Por lo tanto, optimizar la configuración del contenido y las plantillas de Vesta es crucial para los profesionales del marketing online que desean destacar en SEO .

Puedes echar un vistazo a los siguientes tutoriales en el panel de VestaCP ▼

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Ir al Inicio