`

php-fpm的两种进程管理模式

 
阅读更多

php-fpm的两种进程管理模式

php-fpm的进程数也是可以根据设置分为动态和静态的。
一种是直接开启指定数量的php-fpm进程,不再增加或者减少;

另一种则是开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态的增加php-fpm进程数到上限,当空闲的时候自动释放空闲的进程数到一个下限。

这两种不同的执行方式,可以根据服务器的实际需求来进行调整。

这里先说一下涉及到这个的几个参数吧,他们分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。

pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。

在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件给出的说明了。PHP5.3

php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之 一,因此可以将php-fpm的处理方式改成apache模式。


下面4个参数的意思分别为:

pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置的数量个php-fpm进程。

如果dm设置为dynamic,那么pm.max_children参数失效,后面3个参数生效。系统会在php-fpm运行开始的时候启动 pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和 pm.max_spare_servers之间调整php-fpm进程数。

那么,对于我们的服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,我们运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。
这也是为什么开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。所以,动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。

然后对于比较大内存的服务器来说,设置为静态的话会提高效率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据内存/30M 得到。比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。

分享到:
评论

相关推荐

    深入php-fpm的两种进程管理模式详解

    php-fpm的两种进程管理模式php-fpm的进程数也是可以根据设置分为动态和静态的。一种是直接开启指定数量的php-fpm进程,不再增加或者减少;另一种则是开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态...

    php5.2.17版本和PHP5.2.17 fpm补丁

    PHP-FPM (FastCGI 进程管理器) 是 PHP 的一种扩展,它允许 PHP 以 FastCGI 方式运行,提高了性能和稳定性。在 Linux 上,特别是与 Nginx 配合时,PHP-FPM 是必要的,因为 Nginx 不直接处理 PHP 脚本,而是通过 ...

    Nginx使用的php-fpm的两种进程管理方式及优化

    本文将深入探讨PHP-FPM的两种进程管理方式——静态(static)和动态(dynamic),以及如何根据服务器性能和负载进行优化。 1. 静态进程管理(static) 在静态模式下,PHP-FPM会创建并保持一个固定数量的子进程,这...

    基于php-fpm 参数的深入理解

    它可以设置为“static”或“dynamic”两种模式。“static”模式下,子进程的数量固定,由“pm.max_children”设置。“dynamic”模式下,子进程的数量则根据“pm.max_children”、“pm.start_servers”、“pm.min_...

    ubuntu10.04配置 nginx+php-fpm模式的详解

    Nginx并不直接支持PHP解析,它依赖于FastCGI进程与后台的PHP-FPM进程管理器通信,PHP-FPM负责处理PHP脚本的执行。相比传统的PHP-FPM处理模式,Nginx+PHP-FPM模式具有更高的性能和更强的可伸缩性。 安装PHP-FPM 在...

    php配置php-fpm启动参数及配置详解

    12. `pm`:进程管理策略,可以设置为`static`或`dynamic`。`static`表示固定数量的子进程,`dynamic`则根据负载动态调整子进程数。 13. `pm.max_children`:在`static`模式下,定义子进程的最大数量;在`dynamic`...

    基于php-fpm的配置详解

    在进程管理方面,`pm`参数可以选择进程管理模式,`static`模式下子进程数固定,而`dynamic`模式则根据负载动态调整。`pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`和`pm.max_spare_servers`分别...

    php-fpm中max_children的配置

    首先,`max_children`的设置分为两种模式:静态(static)和动态(dynamic)。在静态模式下,`pm`设置为`static`,PHP-FPM会在启动时创建`pm.max_children`指定数量的worker进程,并且在整个运行期间保持不变。这种...

    Linux平台PHP5.4设置FPM线程数量的方法

    主要有两种模式:`static`和`dynamic`。 1. **静态模式(static)**: 在`pm = static`模式下,FPM会启动固定数量的子进程来处理请求。子进程的数量由`pm.max_children`设定。例如,`pm.max_children = 5`表示将...

    monkeyServer:您想在您的机器上安装 LMPM 堆栈(Linux、Monkey Web Server、PHP-FPM、MariaDB)吗? monkeyServer 将帮助您处理这些过程!

    包括什么monkeyServer.sh 有两种风格:默认口味猴子网络服务器PHP5-FPM 玛丽亚数据库配置服务器防火墙(CSF+LFD) 管理员默认风味的运行进程和资源使用情况:NOSQL 风味此版本不包括 MariaDB 或 Adminer。...

    php全集 经典php配置

    4. `pm.start_servers`、`pm.min_spare_servers` 和 `pm.max_spare_servers`:控制动态模式下的进程管理。 总结,理解并掌握PHP的配置对于优化性能、提高安全性及解决实际问题至关重要。通过深入学习PHP与Apache的...

    php-5.4.45window的官方版本带nts和不带nts

    在Windows平台上,PHP通常与FastCGI配合使用,例如通过FastCGI进程管理器(FastCGI Process Manager,简称FPM)。在这种配置下,PHP-CGI进程通常不需要线程安全,因此NTS版本更受欢迎。 压缩包中的两个文件...

    PHP部分面试题

    - 主进程管理子进程的生命周期,包括创建、销毁和监控子进程。 2. **子进程**: - 子进程负责实际执行PHP脚本。 - 子进程的数量可以根据配置动态调整。 3. **通信机制**: - PHP-FPM 通过TCP/IP或者Unix ...

    PHP+FastCGI+Nginx配置PHP运行环境

    FastCGI接口是CGI协议的一种改进版,它包括了FastCGI协议和FastCGI程序(如PHP-FPM,即PHP的FastCGI进程管理器)两部分。FastCGI程序可以理解为CGI程序的扩展,它可以让CGI程序更加高效地运行。在Nginx中,当遇到...

    php-5.3.15-nts-Win32-VC9-x86

    10. **性能优化**:可以通过调整PHP配置、启用OPcache(用于缓存预编译的PHP代码)、使用FastCGI进程管理器(如php-fpm)等方式提升PHP应用的性能。 综上所述,"php-5.3.15-nts-Win32-VC9-x86"是一个适用于32位...

    PHP swoole loader 扩展 for linux win系统、线程安全\非安全、PHP54-81 全集

    在标题和描述中,我们看到`PHP swoole loader`针对的是Linux和Windows系统,并且涵盖了线程安全和非线程安全两种模式,同时兼容PHP54到PHP81的多个版本。这意味着无论你是在哪种操作系统环境下,或使用哪个PHP版本,...

    PHP版本选择

    然而,PHP5.3的性能提升、新特性的引入,如内置的php-fpm(FastCGI进程管理器)、更优秀的垃圾回收机制、命名空间支持以及SQLite3的集成,使得它成为自定义开发项目或新项目的首选。 在PHP的构建版本上,有VC6和VC9...

    浅析PHP7的多进程及实例

    标题和描述所涉及的知识点包含了PHP7中多进程的概念、重要性、应用场景,以及如何利用pcntl和posix扩展来创建和管理多进程。以下是详细的知识点: 一、PHP7多进程的概念与重要性: PHP作为一种服务器端脚本语言,...

    Web安全漏洞进阶.pdf

    PHP-FPM是一个管理和执行FastCGI进程的工具,它支持TCP和UNIX套接字两种通信模式。攻击者可以利用PHP-FPM的配置错误,通过FastCGI协议发起攻击。例如,通过配置文件php.ini中的auto_prepend_file等选项,攻击者可以...

Global site tag (gtag.js) - Google Analytics