Al instalar php, aquellos que tengan cuidado pueden encontrar que también instalamos el módulo php-fpm. El módulo fpm es responsable de procesar el proceso de solicitud. Las operaciones relacionadas de fpm afectarán directamente a la cantidad de solicitudes a las que puede responder el servidor. La configuración adecuada mejorará efectivamente la eficiencia del procesamiento; de lo contrario, se producirá un tiempo de espera de puerta de enlace 502 o un error 504.
Abramos el archivo www.conf en /etc/php/7.2/fpm/pool.d y busquemos los siguientes parámetros:
pm=dynamicpm.max_children=5pm.start_servers=2pm.min_spare_servers=1pm.max_spare_servers=3;pm.max_requests=500
Estos son los parámetros predeterminados después de que el autor instaló PHP. Los explicaré uno por uno a continuación:
La primera dinámica indica que el modo de procesamiento del proceso es dinámico y también le corresponde un modo estático.
Si pm se establece en estático, solo tiene efecto el parámetro pm.max_childern.
Si pm se establece en dinámico, los siguientes cuatro parámetros tendrán efecto. El sistema iniciará los procesos pm.start_servers php-fpm cuando php-fpm comience a ejecutarse y luego ajustará dinámicamente la cantidad de procesos php-fpm entre pm.min_spare_servers y pm.max_spare_servers de acuerdo con las necesidades del sistema.
El segundo parámetro pm.max_children indica el número máximo de procesos que se pueden bifurcar (iniciar). Obviamente, cuanto mayor sea la cantidad, más solicitudes se podrán realizar al mismo tiempo. Naturalmente, no habrá conexiones lentas o. Tiempos de espera de solicitud prolongados, pero la CPU o la memoria aún estarán disponibles. La ocupación no es alta. Este valor se refiere a la cantidad de procesos php-fpm abiertos en modo estático y limita la cantidad máxima de procesos php-fpm en modo dinámico.
El tercer parámetro pm.start_servers indica que si está en modo dinámico, se iniciarán varios procesos en el estado inicial y luego se ajustarán dinámicamente según sea necesario, y está determinado por los dos parámetros pm.min_spare_servers y pm.max_spare_servers.
El cuarto parámetro pm.min_spare_servers representa el número mínimo de procesos php-fpm en estado inactivo en modo dinámico y el número retenido después de limpiar los procesos inactivos.
El quinto parámetro pm.max_spare_servers representa el número máximo de procesos php-fpm en estado inactivo en modo dinámico, es decir, cuando los procesos inactivos alcanzan este valor, se limpian.
El sexto parámetro pm.max_requests indica la cantidad de solicitudes antes de destruir el proceso y reiniciarlo, lo que puede evitar pérdidas de memoria.
Obviamente, max_children aquí es 5, que es suficiente al principio. A medida que aumenta el tráfico, definitivamente no será suficiente. Hablemos de la configuración de valores específicos. El impacto más directo es el valor pm.max_children. : Si la memoria y los recursos del sistema de la CPU lo permiten, cuanto más grande, mejor. Aquí hay un método de cálculo. Por ejemplo, un proceso de fpm es de aproximadamente 15 ~ 25 M. Luego, cuando el servidor tiene memoria 4G, solo en condiciones ideales, puede ser aproximadamente. 150~300 cuando se utiliza por completo y luego observe el estado del servidor y realice ajustes.
En términos generales, los servidores de memoria grandes (como 32 y 64G y superiores) pueden considerar el modo estático, que tiene buenos efectos de concurrencia. Los servidores de memoria pequeños pueden considerar el modo dinámico, que se puede controlar automáticamente según demanda.
Puede realizar pruebas de estrés según su propia situación y realizar ajustes según las condiciones de su propio servidor.