一、概述
在生产环境中,php-fpm是常用的web服务器之一。php-fpm使用了fastCGI的方式来与nginx等web服务器进行交互,提供Web 服务器需要的php解析服务,从而在处理高并发请求时迅速响应。在php7+中,php-fpm的参数配置有一些特别的注意事项,以保证机器性能的最大化,下面我们一起来看看这些注意事项。
二、php-fpm参数配置注意事项
2.1 更改pm.max_children
pm.max_children指定了php-fpm的最大进程数,默认值为5。这意味着,如果您的Web站点的并发访问量超过了5,就会出现阻塞的情况。因此,在一个高访问量的站点上,建议将pm.max_children改为适合该站点的数字。但请注意,太多的进程数可能导致服务器的内存消耗过大,而导致服务器变慢、奔溃等。
2.2 适当设定pm.min_spare_servers和pm.max_spare_servers
pm.min_spare_servers和pm.max_spare_servers分别指定了php-fpm空闲进程的最小值和最大值。如果您的站点的并发访问量较低,可以将这两个值适当调低;如果站点并发请求量较高,则应该将这两个值分别调高。例如,当pm.min_spare_servers的值为2时,意味着:即使php-fpm没有收到任何请求,仍然会保留2个空闲的php-fpm进程。这种预留的空间可以提高服务器的响应速度。同理,如果pm.max_spare_servers过大,会占用服务器的内存,导致奔溃。
2.3 调整pm.start_servers
php-fpm启动时,会启动的进程数由pm.start_servers决定。此参数的值应该足够以应对站点的预期使用负载。例如,如果您的Web站点需要响应100个并发请求,则第一次启动时,应设定pm.start_servers为100。在之后,根据不断监控服务器的负载情况,调整pm.start_servers以保证服务器的性能最大化。
2.4 调整request_terminate_timeout
request_terminate_timeout指定了php-fpm处理一个请求所需要的时间。如果不设置此参数,则默认值为60秒。因此,如果您的站点处理请求的时间较长,则应将此参数设置为足够长的时间,以避免中断处理。不过请不要将此参数过大,因为这会占用服务器的资源,导致服务器变慢。
2.5 关闭clear_env
在默认情况下,当php-fpm处理一个请求时,会清除所有的环境变量。如果您需要使用环境变量,请关闭此参数。可通过以下方式实现:
```php
php_admin_value[clear_env] = no
```
三、 总结
在高并发请求下,php-fpm的配置对机器性能至关重要。在配置时,请谨慎地考虑pm.max_children、pm.min_spare_servers、pm.max_spare_servers、pm.start_servers、request_terminate_timeout等参数,确保php-fpm的配置值能充分发挥服务器的性能。