linux下的php-fpm参数配置介绍与参数优化说明

yizhihongxing

以下是详细讲解“linux下的php-fpm参数配置介绍与参数优化说明”的完整攻略。

什么是PHP-FPM?

PHP-FPM(FastCGI Process Manager)是PHP自带的一款解释器,它通过FastCGI协议与Web服务器进行通信,提高了PHP的运行效率。PHP-FPM 带来了更多的配置选项。

PHP-FPM的配置文件

PHP-FPM的配置文件由两部分组成:

  1. php-fpm.conf:主要定义全局配置,如日志路径、进程管理方式等
  2. pool.d/*.conf:每个进程池的配置文件

PHP-FPM的参数介绍

php-fpm.conf 参数介绍

以下是部分常用的配置参数说明:

  • pid:PID文件路径,默认 /var/run/php-fpm.pid
  • error_log:错误日志文件路径,默认 /var/log/php-fpm.log
  • syslog.facility:设定syslog监控器所使用的设施值(facility)。默认daemon
  • syslog.ident:会出现在syslog消息前缀中的字符串。默认php-fpm
  • log_level:错误日志的级别。默认notice
  • emergency_restart_threshold:主进程遇到的请求错误数,达到这个数时会重启。默认为0,表示禁用该功能
  • process_control_timeout:主进程在一次检查进程时进行等待的时间。默认为0

pool.d/*.conf 参数介绍

以下是部分常用的配置参数说明:

  • user/group:指定进程运行的用户和用户组
  • listen:指定绑定的地址(Unix或者TCP socket),如:
listen = /tmp/php-fpm.sock
listen = 127.0.0.1:9000
  • listen.backlog:指定 listen 最大的 pending 连接队列长度。默认 -1(backlog应该是操作系统自己限制的)
  • listen.allowed_clients:允许连接到这个程序的所有客户端的IP地址,如:
; 将允许所有来自 192.168.1.x 的客户端连接。
listen.allowed_clients = 192.168.1.0/24
  • pm:进程管理器,可选静态、ondemand 和 dynamic 三种方式
  • pm.max_children:进程池中最大进程数,默认 5
  • pm.start_servers:启动进程数,默认 2
  • pm.min_spare_servers:空闲状态时的最小进程数,默认 1
  • pm.max_spare_servers:空闲状态时的最大进程数,默认 3
  • pm.process_idle_timeout:进程闲置多少秒后被回收,默认 10s
  • request_terminate_timeout:单个请求最大执行时间,默认 0,表示不开启
  • request_slowlog_timeout:慢日志记录,超过多少秒的请求会被记录。默认 0,表示不记录
  • slowlog:慢日志文件路径,默认 /var/log/php-fpm/www-slow.log

PHP-FPM参数优化

工作负载和硬件各异,合适的参数可以提高PHP-FPM的运行效率和稳定性。

优化1:调整进程池大小

pm.max_children 指定进程池中的进程数量,过多会导致系统资源的浪费;过少会导致请求速度慢,因此需要为当前的请求工作量设置最佳值。

进程池的大小可以通过几种方式来调整。可以使用 systemctl status php-fpm.service 命令观察进程数量的变化,也可以使用 ab (Apache HTTP Server 的性能测试工具)来测试系统。

例如,以下是一份配置,可以作为一个参考:

pm.max_children = 30
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

优化2:启用慢日志

启用慢日志可以帮助定位PHP应用中的性能瓶颈。

例如,以下是一份慢日志配置的参考:

; 慢日志开启
request_slowlog_timeout = 10s

; 慢日志写入文件
slowlog = /var/log/php-fpm/www-slow.log
slowlog = /var/log/php-fpm/www-slow.log.%y%m%d

; 慢日志格式:$request_date,$filename,$seriousness,$query_string
request_slowlog_file = /var/log/php-fpm/www-slow.log
log_format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

示例1:通过 ab 测试进程池大小

我们可以使用 ab 工具来测试当前 PHP-FPM 进程池的大小是否合适。PHP-FPM开始提高子进程的数量,直到我们达到一个瓶颈或内存不足为止。

比如我们可以使用如下的命令进行测试:

ab -c 100 -n 200 http://192.168.1.210/index.php
  • -c 100 表示并发请求数(concurrent requests)为 100,这是我们想测试的事情,即同时发起多少个请求
  • -n 200 表示请求数(requests)为200,也就意味着我们会发送200个请求

我们来修改 PHP-FPM 进程池的配置文件,以达到最优配置:

pm.max_children = 30
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

示例2:利用慢日志定位性能瓶颈

我们可以利用慢日志功能,来定位 PHP-FPM 中的性能瓶颈。如果我们开启了慢日志,当 PHP-FPM 执行一个耗时大于或等于 $request_slowlog_timeout 的脚本时,PHP-FPM 就会记录这些访问日志到指定的 slowlog 日志文件中。

例如,我们可以在 pool.d/*.conf 中增加如下的配置:

request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/www-slow.log

这将允许将所有执行时间大于或等于 10 秒的请求写入 /var/log/php-fpm/www-slow.log 日志文件中。

我希望以上这份攻略能够对你有所帮助,如果还有什么疑问或需要补充的请随时指出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux下的php-fpm参数配置介绍与参数优化说明 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • PHP字符串中提取文件名的实例方法

    下面我来详细讲解一下“PHP字符串中提取文件名的实例方法”的完整攻略。 一、获取文件名的两种方法 在PHP中,我们可以使用basename()函数或正则表达式来获取字符串中的文件名。 basename()函数 basename()函数可以获取文件的文件名,它的基本语法如下: basename( string $path , string $suffix = …

    PHP 2023年5月26日
    00
  • php 一维数组的循环遍历实现代码

    下面是讲解 PHP 一维数组循环遍历实现代码的攻略: 一、使用 foreach 循环遍历数组 PHP 一维数组可以使用 foreach 循环进行遍历和打印输出,具体步骤如下: 用关键字 foreach 循环来遍历数组; 遍历时,需要建立循环变量 $value 和 $key,分别用来代表数组的元素值和元素下标。 示例1:遍历输出一维数组的键值对 $array …

    PHP 2023年5月26日
    00
  • php配置php-fpm启动参数及配置详解

    PHP配置php-fpm启动参数及配置详解 php-fpm是什么? PHP-FPM(FastCGI Process Manager for PHP)是 PHP 官方针对 FastCGI 协议的 PHP 处理程序管理器,是基于 FastCGI 的进程管理器,可以独立于 Web 服务器(如 nginx、apache)运行。PHP-FPM 可以更好的管理 PHP …

    PHP 2023年5月24日
    00
  • PHP基于array_unique实现二维数组去重

    下面我就给你介绍一下“PHP基于array_unique实现二维数组去重”的完整攻略。 前言 在实际开发过程中,经常会遇到需要对二维数组进行去重处理的情况,比如从数据库中取出的数据,或是从表单提交的数据中提取出的多维数组等等。在PHP中,我们可以利用array_unique()函数来实现对一维数组的去重,但对于二维数组,该函数就失灵了。不过,我们可以借助一些…

    PHP 2023年5月26日
    00
  • i7处理器的优势有哪些 i7和i5处理器区别对比

    i7处理器的优势有哪些 i7处理器是英特尔(Intel)公司推出的高端处理器,与其它处理器相比具有一定的优势。 1. 性能更强 i7处理器的性能比i5处理器更强。i7处理器采用更高的频率、更多的核心、更大的缓存等技术,可以在计算机运行更多的任务,并具有更高的计算能力。 例如,i5-10600K处理器和i7-10700K处理器的差距就很明显。i7-10700K…

    PHP 2023年5月27日
    00
  • 如何使用php生成zip压缩包

    生成zip压缩包是一个很常用的需求,在PHP中我们可以通过ZipArchive类来轻松实现。下面是使用PHP生成zip压缩包的完整攻略: 步骤1:创建ZipArchive对象 首先,我们需要实例化 ZipArchive 类,并且打开一个新的压缩文件。 $zip = new ZipArchive(); $zipFileName = ‘test.zip’; if…

    PHP 2023年5月26日
    00
  • 支付宝怎么删除小程序? 支付宝已收藏小程序删除的方法

    下面我将为大家详细讲解“支付宝怎么删除小程序? 支付宝已收藏小程序删除的方法”。 删除小程序的基本方法 打开支付宝应用,在首页下拉找到“更多”选项; 点击“更多”,进入下一级页面后,可以看到“小程序”选项; 点击“小程序”,进入小程序收藏页面; 找到需要删除的小程序,长按小程序图标,弹出删除提示框; 点击“删除”按钮,即可将小程序从支付宝中删除。 删除小程序…

    PHP 2023年5月30日
    00
  • 如何把php5.3版本升级到php5.4或者php5.5

    以下是把PHP5.3升级到PHP5.4或PHP5.5的攻略: 1. 确认当前PHP版本 如果你不确定你的服务器上已经安装的PHP版本,可以使用以下命令: php -v 这个命令会输出PHP版本信息。如果你的版本是5.3.x,那么你就需要升级了。 2. 将依赖关系解决掉 在升级PHP之前,你需要先解决相关依赖关系。在Ubuntu上,你可以使用以下命令: sud…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部