我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP FPM配置参数有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP FPM配置参数有哪些

今天小编给大家分享一下PHP FPM配置参数有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

PHP-FPM 是一个 PHP FastCGI 进程管理器。FastCGI 是一个可伸缩的,高速地在web server和脚本语言间交互的接口。FastCGI的主要优点是把动态语言和web server分离开来。这种技术允许把web server和动态语言运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。

PHP FPM配置参数有哪些

PHP-FPM配置详解

FPM配置文件为php-fpm.conf,其语法类似 php.ini 。

php-fpm.conf全局配置段# 包含其他POOL定义配置文件include=/etc/php-fpm.d/*.conf# 全局配置段,定义PID文件的位置和错误日志的位置[global]daemonize = yespid = /var/run/php-fpm/php-fpm.piderror_log = /var/log/php-fpm/error.log

一般在主配置文件php-fpm.conf全局配置段中的配置非常少,php-fpm可以配置多个pool,每个pool都是以一个独立的配置文件来运作,默认都会定义在主配置文件的include包含文件目录中。php默认会提供一个www的pool,大概配置如下。

$ cat /etc/php-fpm.d/www.conf[www]user = apachegroup = apachelisten = 127.0.0.1:9000listen.allowed_clients = 127.0.0.1pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35

每个pool配置文件参数可以独立,也可以设置在主配置文件的全局配置段中,这样每个pool就共用一个参数。建议最好分开设置。大概常用参数如下:

daemonize = yes

#后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。

listen = 127.0.0.1:9000

#fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’,每个进程池都需要设置。如果nginx和php在不同的机器上,分布式处理,就设置ip这里就可以了。

listen.backlog = -1

#backlog数,设置 listen 的半连接队列长度,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41。

log_level = notice

#错误级别. 上面的php-fpm.log纪录的登记。可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice。

emergency_restart_threshold = 60emergency_restart_interval = 60s

#表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。0 表示 ‘关闭该功能’. 默认值: 0 (关闭).

process_control_timeout = 0

#设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.

listen.allowed_clients = 127.0.0.1

#允许访问FastCGI进程的IP白名单,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接。

listen.owner = wwwlisten.group = wwwlisten.mode = 0666

#unix socket设置选项,如果使用tcp方式访问,这里注释即可。

user = wwwgroup = www

#启动进程的用户和用户组,FPM 进程运行的Unix用户, 必须要设置。用户组,如果没有设置,则默认用户的组被使用。

pm = dynamic

#php-fpm进程启动模式,pm可以设置为static和dynamic和ondemand。如果选择static,则进程数就是固定的,由pm.max_children指定固定的子进程数。如果选择dynamic,则进程数是动态变化的,由以下参数决定:

pm.max_children = 50

#子进程能开启的最大数。

pm.start_servers = 2

#启动时的进程数,默认值为: min_spare_servers + (max_spare_servers – min_spare_servers) / 2。

pm.min_spare_servers = 1

#保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程。

pm.max_spare_servers = 3

#保证空闲进程数最大值,如果空闲进程大于此值,此进行清理。

pm.max_requests = 500

#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ‘0’ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0。

pm.status_path = /status

#FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到

ping.path = /ping

#FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。

ping.response = pong

#用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.

access.log = log/$pool.access.log

#每一个请求的访问日志,默认是关闭的。

access.format = “%R – %u %t \”%m %r%Q%q\” %s %f %{mili}d %{kilo}M %C%%”

#设定访问日志的格式。

slowlog = log/$pool.log.slow

#慢请求的记录日志,配合request_slowlog_timeout使用,默认关闭

request_slowlog_timeout = 10s

#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 ‘0’ 表示 ‘Off’

request_terminate_timeout = 0

#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的’max_execution_time’因为某些特殊原因没有中止运行的脚本有用. 设置为 ‘0’ 表示 ‘Off’.当经常出现502错误时可以尝试更改此选项。

rlimit_files = 1024

#设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。

rlimit_core = 0

#设置核心rlimit最大限制值. 可用值: ‘unlimited’ 、0或者正整数. 默认值: 系统定义值。

chroot = /data/app

#启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用。

chdir = /data/app

#设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时)。

catch_workers_output = yes

#重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空。

当然还有一些无关紧要的设置,用到了再说吧。

PHP-FPM重要的设置

php-fpm进程分配

在之前的文章中就说过了。在fasgcgi模式下,php会启动多个php-fpm进程,来接收nginx发来的请求,那是不是进程越多,速度就越快呢?这可不一定!得根据我们的机器配置和业务量来决定。

我们先来看下,设定进程的配置在哪里?

pm = static | dynamic | ondemandpm可以设置成这样3种,我们用的最多的就上前面2种。pm = static模式pm = static 表示我们创建的php-fpm子进程数量是固定的,那么就只有pm.max_children = 50这个参数生效。你启动php-fpm的时候就会一起全部启动51(1个主+50个子)个进程,颇为壮观。pm = dynamic模式pm = dynamic模式,表示启动进程是动态分配的,随着请求量动态变化的。他由pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers 这几个参数共同决定。上面已经讲过,这里再重申一下吧:pm.max_children = 50是最大可创建的子进程的数量。必须设置。这里表示最多只能50个子进程。pm.start_servers = 20随着php-fpm一起启动时创建的子进程数目。默认值:min_spare_servers + (max_spare_servers – min_spare_servers) / 2。这里表示,一起启动会有20个子进程。pm.min_spare_servers = 10设置服务器空闲时最小php-fpm进程数量。必须设置。如果空闲的时候,会检查如果少于10个,就会启动几个来补上。pm.max_spare_servers = 30设置服务器空闲时最大php-fpm进程数量。必须设置。如果空闲时,会检查进程数,多于30个了,就会关闭几个,达到30个的状态。

一般原则是:动态适合小内存机器,灵活分配进程,省内存。静态适用于大内存机器,动态创建回收进程对服务器资源也是一种消耗。

如果你的内存很大,有8-20G,按照一个php-fpm进程20M算,100个就2G内存了,那就可以开启static模式。如果你的内存很小,比如才256M,那就要小心设置了,因为你的机器里面的其他的进程也算需要占用内存的,所以设置成dynamic是最好的,比如:pm.max_chindren = 8, 占用内存160M左右,而且可以随时变化,对于一半访问量的网站足够了。

慢日志查询

我们有时候会经常饱受500,504问题困扰。当nginx收到如上错误码时,可以确定后端php-fpm解析php出了某种问题,比如,执行错误,执行超时。

这个时候,我们是可以开启慢日志功能的。

slowlog = /usr/local/var/log/php-fpm.log.slowrequest_slowlog_timeout = 15s

当一个请求该设置的超时时间15秒后,就会将对应的PHP调用堆栈信息完整写入到慢日志中。

php-fpm慢日志会记录下进程号,脚本名称,具体哪个文件哪行代码的哪个函数执行时间过长:

[21-Nov-2013 14:30:38] [pool www] pid 11877script_filename = /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php[0xb70fb88c] file_get_contents() /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php:2

通过日志,我们就可以知道第2行的file_get_contents 函数有点问题,这样我们就能追踪问题了。

以上就是“PHP FPM配置参数有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP FPM配置参数有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP FPM配置参数有哪些

今天小编给大家分享一下PHP FPM配置参数有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP-FPM 是一个 PH
2023-06-27

Linux安装PHP配置参数有哪些

这篇文章将为大家详细讲解有关Linux安装PHP配置参数有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux安装PHP配置参数有:1、“--prefix”;2、“--with-config-fi
2023-06-25

hadoop YARN配置参数有哪些

本篇内容主要讲解“hadoop YARN配置参数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop YARN配置参数有哪些”吧!MapReduce相关配置参数分为两部分,分别是Jo
2023-06-03

PPTP的配置参数有哪些

这篇文章主要介绍“PPTP的配置参数有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PPTP的配置参数有哪些”文章能帮助大家解决问题。PPTP是在PPP协议的基础上开发的一种新的增强型安全协议,
2023-06-27

云服务器配置参数有哪些

云服务器配置参数可以包括以下几个方面:CPU:服务器的主要处理器,主要用于计算密集型工作负载,如计算、图形图像处理等。内存:服务器的重要资源,用于存储数据、应用程序数据等。通常包括物理内存、虚拟内存等。存储:存储服务器上的软件应用程序和其他数据。这些资源包括文件系统、数据库、缓存等。I/O:向服务器上的其他设备发送数据的通道。包括磁盘I/O、网络I/O等。网络连接:网络设备(如路由器、交换机、防火墙等)通过它们...
2023-10-27

服务器配置参数命令有哪些

服务器配置参数命令因不同操作系统和应用程序而异,以下是一些常见的服务器配置参数命令:1、CPU信息lscpu、cat /proc/cpuinfo2、内存信息free -m、cat /proc/meminfo3、硬盘信息df -h、lsblk
2023-03-22

视频服务器配置参数有哪些

视频服务器配置参数包括:1. 处理器:通常使用多核心的处理器,如Intel Xeon、AMD EPYC等。2. 内存:视频服务器需要大量的内存来缓存视频流和处理数据,一般建议使用8GB或更大的内存。3. 存储:视频服务器需要大容量的存储空间
2023-06-04

uniapp安装包参数有哪些?如何配置?

uniapp(全称:Universal Application)是一种基于Vue.js开发跨平台应用的框架。由于其跨平台的特点,目前在市场上越来越受欢迎,开发人员也越来越多地开始使用它来开发移动应用和小程序。在uniapp中,我们可以通过安装包的方式进行项目的部署和发布。在这篇文章中,我们将要介绍的是uniapp安装包参数。一、什么是uniapp安装包?uniapp安装包指的是
2023-05-14

云服务器配置参数有哪些类型

CPU:云服务器通常使用处理器来管理资源的分配和控制计算机的操作。CPU是云服务器中最关键的配置参数之一。CPU的性能对云服务器的性能和稳定性有很大的影响。内存:云服务器通常使用内存来存储数据和资源。内存的大小决定了云服务器的可扩展性和响应速度。磁盘空间:磁盘空间是云服务器存储数据和资源的容量。云服务器通常使用磁盘空间
云服务器配置参数有哪些类型
2023-10-28

php-fpm中有哪些启动方式

这篇文章主要为大家展示了“php-fpm中有哪些启动方式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php-fpm中有哪些启动方式”这篇文章吧。php-fpm 的各种启动方式: 启动
2023-06-22

数据库服务器硬件配置参数有哪些

数据库服务器的硬件配置参数主要包括以下几个方面:1、处理器(CPU)处理器是数据库服务器的核心组件,需要选择高性能的CPU,如英特尔Xeon系列、AMD EPYC系列等,以提高数据库的处理能力。2、内存(RAM)内存是数据库服务器的另一个关
2023-03-21

php的fpm和swoole有哪些区别

本文小编为大家详细介绍“php的fpm和swoole有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“php的fpm和swoole有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别:1、“PHP
2023-06-29

Java数据库连接池Druid的配置参数有哪些

这篇文章主要介绍“Java数据库连接池Druid的配置参数有哪些”,在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据库连接池D
2023-06-25

PHP 函数参数类型有哪些?

php 函数参数类型包括标量类型(整数、浮点数、字符串、布尔值、空值)、复合类型(数组、对象)和特殊类型(回调函数、可变参数)。函数可自动转换不同类型参数,但也可通过类型声明强制特定类型,以防止意外转换并确保参数正确性。PHP 函数参数类型
PHP 函数参数类型有哪些?
2024-04-10

PHP define()函数的参数有哪些

在 PHP 中,`define()` 函数用于定义一个常量。它接受两个必填参数和一个可选参数。下面是 `define()` 函数的参数列表:1. `name`(必填):指定常量的名称。常量名可以是任意有效的标识符,但通常使用全大写字母和下划
2023-10-11

php安装 liunx参数有哪些

Linux安装PHP配置参数有:1、“--prefix”;2、“--with-config-file-path”;3、“--with-MySQL”;4、“--enable-safe-mode”;5、“--enable-zip”等等。
2014-05-02

web虚拟主机需要配置的参数有哪些

web虚拟主机需要配置的参数有:1、域名虚拟主机需要绑定的域名。2、硬盘空间虚拟主机需要的磁盘空间大小。3、带宽虚拟主机需要的网络带宽大小。4、数据库虚拟主机需要的数据库类型和数量。5、FTP帐号虚拟主机需要的FTP帐号及其权限。6、邮箱虚
2023-03-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录