君语贤
时光静好,与君语;细水流年,与君同;繁华落尽,与君老...

首页>建站开发>PHP>正文

php-fpm进程说明

2024-07-30 标签:php-fpm脚本执行进程管理器

PHP-FPM(PHP FastCGI Process Manager)是一个用于管理 PHP 脚本执行的进程管理器,特别适用于高负载网站。它提供了一些额外的功能来提高 PHP 的性能和稳定性,如进程管理、日志记录、慢请求跟踪等。以下是对 PHP-FPM 进程的一些说明:

1. 主进程(Master Process)

  • 职责:负责启动、停止和管理所有的子进程。
  • 权限:通常以 root 权限运行,以便绑定到低编号端口(如80),然后降权运行子进程。
  • 配置文件:读取并解析主配置文件(通常为 /etc/php-fpm.conf/etc/php-fpm.d/*.conf)。

2. 子进程(Worker Processes)

  • 职责:实际处理传入的 PHP 请求。
  • 数量:可以通过配置文件中的 pm.max_children 参数来设置最大子进程数。
  • 生命周期:由主进程创建和销毁,根据负载情况动态调整。

3. 配置参数

PHP-FPM 的配置文件中有许多参数可以调节其行为,以下是一些常用参数:

主配置文件参数

  • pid: 指定主进程的 PID 文件路径。
  • error_log: 错误日志文件路径。

池(Pool)配置参数

每个池都有自己的配置文件,通常位于 /etc/php-fpm.d/ 目录下,每个池可以有不同的设置。

  • listen: 指定监听地址和端口,例如 127.0.0.1:9000 或 Unix 套接字 /var/run/php-fpm.sock
  • usergroup: 指定子进程运行的用户和组。
  • pm: 进程管理模式,可以是 static, dynamic, 或 ondemand
    • static: 固定数量的子进程,由 pm.max_children 决定。
    • dynamic: 动态调整子进程数量,根据负载情况在 pm.min_spare_serverspm.max_spare_servers 之间变化,并且总数不超过 pm.max_children
    • ondemand: 按需启动子进程,当没有请求时会终止所有子进程,最小数量由 pm.process_idle_timeout 决定。
  • pm.max_children: 最大子进程数。
  • pm.start_servers: 启动时创建的子进程数,仅在动态模式下有效。
  • pm.min_spare_servers: 保持最小空闲子进程数,仅在动态模式下有效。
  • pm.max_spare_servers: 保持最大空闲子进程数,仅在动态模式下有效。
  • slowlog: 慢请求日志文件路径,用于记录超过指定时间的慢请求。

4. 日志

PHP-FPM 提供了多种日志记录方式:

  • 错误日志:记录 PHP-FPM 自身的错误信息,由主配置文件中的 error_log 参数指定路径。
  • 访问日志:记录每个请求的信息,可以通过池配置中的 access.log 参数指定路径。
  • 慢请求日志:用于追踪执行时间过长的脚本,由池配置中的 slowlog 参数指定路径,并配合使用参数 request_slowlog_timeout 设置超时时间。

5. 信号处理

PHP-FPM 主进程可以通过接收不同的信号来进行控制:

  • SIGTERM: 优雅地关闭所有子进程并退出主进程。
  • SIGINT: 与 SIGTERM 类似,优雅地关闭所有子进程并退出主进程。
  • SIGQUIT: 快速关闭所有子进程并退出主进程,不等待正在处理的请求完成。
  • SIGHUP: 重载配置文件并优雅地重启所有子进程。

通过合理配置和优化 PHP-FPM,可以显著提升 PHP 应用程序的性能和稳定性。

图文推荐
    热门标签
    进程管理器脚本执行php-fpm判断手机号码正则表达式