在Ubuntu上优化PHP-FPM(FastCGI Process Manager)的启动时间可以通过多种方法来实现。以下是一些常见的优化步骤:
systemd
服务配置确保你的PHP-FPM服务是通过systemd
管理的,并且配置文件正确无误。
sudo systemctl status php-fpm
编辑PHP-FPM的配置文件(通常位于/etc/php/版本号/fpm/pool.d/www.conf
),进行以下调整:
增加pm.max_children
和pm.start_servers
的值,以减少启动时的延迟。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
减少pm.process_idle_timeout
的值,以便更快地回收空闲进程。
pm.process_idle_timeout = 10s
php-fpm
的ondemand
模式如果你不需要持续运行PHP-FPM,可以考虑使用ondemand
模式,这样只有在需要时才会启动PHP-FPM。
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 0s
php-fpm
的lazy
模式lazy
模式会在请求到达时启动新的进程,而不是预先启动所有进程。
pm = lazy
pm.max_children = 50
优化内核参数可以提高PHP-FPM的性能。
sudo sysctl -w vm.swappiness=10
sudo sysctl -w fs.file-max=100000
sudo sysctl -w net.core.somaxconn=4096
opcache
启用PHP的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的性能,并查看日志文件以发现潜在问题。
sudo tail -f /var/log/php-fpm.log
php-fpm
的pm.status_path
启用pm.status_path
可以帮助你监控PHP-FPM的状态。
pm.status_path = /status
php-fpm
的request_terminate_timeout
设置合理的请求终止超时时间,以避免长时间运行的请求影响性能。
request_terminate_timeout = 30s
定期重启PHP-FPM服务可以清理内存并释放资源。
sudo systemctl restart php-fpm
通过以上步骤,你可以显著优化PHP-FPM在Ubuntu上的启动时间和整体性能。根据你的具体需求和环境,可能需要调整这些参数以达到最佳效果。