要调整 CentOS 上的 PHP 配置以适应高并发,你需要关注几个关键方面:PHP-FPM、PHP 内存限制、最大执行时间、文件描述符限制等。以下是一些建议:
- 调整 PHP-FPM 配置:
编辑 /etc/php-fpm.d/www.conf
文件,根据服务器的硬件资源和预期的并发量进行调整。
- 增加
pm.max_children
:这个参数决定了 PHP-FPM 可以同时处理的最大请求数。根据服务器的内存和每个 PHP 进程所需的内存进行调整。例如,如果每个 PHP 进程需要 30MB 内存,服务器有 2GB 内存,那么可以将pm.max_children
设置为2GB / 30MB = 66
。 - 调整
pm.start_servers
、pm.min_spare_servers
和pm.max_spare_servers
:这些参数控制 PHP-FPM 的启动和空闲进程数量。根据服务器的负载进行调整。
- 调整 PHP 内存限制:
编辑 /etc/php.ini
文件,增加或修改以下参数:
memory_limit
:设置 PHP 脚本允许使用的最大内存。根据应用程序的需求进行调整,但要确保不会消耗过多内存。
- 调整最大执行时间:
编辑 /etc/php.ini
文件,修改 max_execution_time
参数。将其设置为一个合适的值,以便让脚本有足够的时间执行,但不要设置得过长,以免影响服务器性能。
- 增加文件描述符限制:
在 /etc/security/limits.conf
文件中,为 web 服务器用户添加以下行:
* soft nofile 65535 * hard nofile 65535
这将允许 web 服务器用户打开更多的文件描述符。根据服务器的实际需求进行调整。
- 优化 OPCache:
编辑 /etc/php.ini
文件,启用并调整 OPCache 参数,以提高 PHP 脚本的执行速度。
[opcache] zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60
- 重启服务:
在进行上述更改后,重启 PHP-FPM 和 web 服务器(如 Nginx 或 Apache)以使更改生效。
sudo systemctl restart php-fpm sudo systemctl restart nginx
请注意,这些只是一些建议,实际配置可能需要根据服务器的具体情况进行调整。在进行更改之前,请确保充分了解每个参数的含义及其对服务器性能的影响。