首页 > 后端开发 > 正文

怎么设置php-fpm进程数

2024-10-06 09:18:53 | 我爱编程网

今天我爱编程网小编为大家带来了怎么设置php-fpm进程数,希望能帮助到大家,一起来看看吧!

本文目录一览:

怎么设置php-fpm进程数

PHP 技能精进之 PHP-FPM 多进程模型

PHP-FPM的多进程模型是PHP进程管理的重要优化工具,它能有效管理内存和进程,提高配置的平滑性。深入理解这个模型,首先要知道PHP-FPM的启动进程方式及其区别,主要包括静态、动态和按需模式。静态模式保持固定进程数,动态模式根据请求量动态调整,按需模式则在需要时才创建进程,但不适用于大流量环境。

PHP-FPM的请求处理机制是子进程抢占式处理,与Nginx类似,而验证其工作方式可以通过系统调用观察。在PHP-FPM下,由于请求生命周期短,通常不建议做连接池,以简化开发和减少内存溢出风险,但特殊情况下,如PConnect可能会带来问题。

性能优化方面,要关注IO和计算性能。PHP-FPM模式下,由于无连接池,网络处理在高并发时可能不如CLI模式,而计算性能上,PHP的脚本解析和执行过程较长。优化建议包括优化日志记录和利用PHP的析构函数或shutdown函数。

最后,YAC扩展在PHP-FPM模式下能够共享内存,但与CLI模式不同,因为它们的进程ID和共享内存标识不同。进程间共享内存通信的关键在于一个统一的标识,而PHP-FPM的子进程继承了主进程的ID,而CLI模式则不然。

如果你想深入了解PHP-FPM和相关技术,可以关注公众号PHP开源社区,获取更多深入资料和实战经验分享。

怎么设置php-fpm进程数

php ob_start多个进程会不会干扰影响输出

php ob_start多个进程会干扰影响输出。 我爱编程网

函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。

目录结构隐通道:

在Red Hat Linux系统中,系统对文件的权限控制分为三类:读、写、执行权,目录也是文件。对目录来说,读意味着用户能够读目录列表,写意味着用户能够在这个目录下建立或删除文件,执行则意味着允许用户从该目录的父目录切换到该目录下。只有当一个目录下的内容为空时,才可以将其删除。

假设系统中当前有用户H、L,H用户安全高于L,H用户建了一个目录D,L被授权对D有写和执行权。L已通过某种手段将特洛伊木马程序S植入用户H的程序中,该特洛依木马企图将从目录D下获得的敏感数据泄露给L。

怎么设置php-fpm进程数

怎么设置php-fpm进程数

我爱编程网(https://www.52biancheng.com)小编还为大家带来怎么设置php-fpm进程数的相关内容。

一个php-fpm进程处理一个http请求,所以服务器上一般都会开多个php-fpm进程,那究竟开多少才比较合适呢?

为了解决这个问题,我们一步一步来

1.需要先了解几个php-fpm.conf文件中的配置项:pm:

即processmanager,进程管理器如何控制子进程的数量,它为必填项,支持3个值,如下所述:

pm=dynamic

static:使用固定的子进程数量,由下述参数指定

pm.max_children=10

dynamic:根据系统的需求,基于下面的参数动态调整子进程数量

pm.start_servers=18#动态方式下的起始php-fpm进程数量pm.min_spare_servers=6#动态方式下的最小php-fpm进程数,如果不足,新的子进程会被自动创建pm.max_spare_servers=30#动态方式下的最大php-fpm进程数量,如果超过,一些子进程会被杀死

ondemand:启动时不会创建子进程,当新的请求到达时才创建。会使用下面两个参数:

pm.max_children=10pm.process_idle_timeout=10s#子进程的空闲超时时间,如果超时时间到没有新的请求,则会被杀死

Tips:上述参数配置位置在php安装目录,如我的位置是:/usr/local/php7/etc/php-fpm.d/www.conf,这个文件是被默认包含在php-fpm.conf文件里的。

2.学习几个linux命令

查看php-fpm的进程个数

ps-ef|grep"php-fpm"|grep"pool"|wc-l

查看每个php-fpm占用的内存大小

ps-ylCphp-fpm--sort:rss

查看PHP-FPM在你的机器上的平均内存占用

ps--no-headers-o"rss,cmd"-Cphp-fpm|awk'{sum+=$1}END{printf("%d%s\n",sum/NR/1024,"M")}'

查看单个php-fpm进程消耗内存的明细

pmap$(pgrepphp-fpm)|less#这个其实我没看懂(??.???) 3.计算合适的进程数

PHP-FPM子进程数量,是不是越多越好?

当然不是,pm.max_chindren,进程多了,增加进程管理的开销以及上下文切换的开销。如何设置,取决于你的代码,如果代码是计算很多,比较烧CPU的,pm.max_chindren不能超过CPU的内核数;如果不是,那么将pm.max_chindren的值大于CPU的内核数,是非常明智的。

在进程数量选择上,有技术大拿给出了公式,我们先看几个变量释义:

N是CPU内核数量。M是PHP能利用的内存数量,就是你打算分多少内存给php用m是每个PHP进程平均使用的内存数量,上面有shell命令可以查看

适用于dynamic的公式是:

在(N+20%)和(M/m)之间

适用于static的公式是:

pm.max_children=100

当然,在statis方式下还有一种更保险的方式,先把max_childnren设置成一个比较大的值,稳定运行一段时间后,观察php-fpm的status里的maxactiveprocesses是多少然后把max_children配置比它大一些就可以了,怎么查看这个maxactiveprocesses写在另一篇博文里

注:

内存泄漏时有发生,所以我们需要对每一个子进程服务的请求数量做限制,防止无限制的内存泄漏,设置如下参数:

pm.max_children=101

以上就是我爱编程网整理的怎么设置php-fpm进程数相关内容,想要了解更多信息,敬请查阅我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“怎么设置php-fpm进程数”相关推荐
intellij idea 怎么设置java程序的参数
intellij idea 怎么设置java程序的参数

intellijidea怎么设置java程序的参数1、选择“CreateNewProject”2、选择Java,然后点击Next3、点击Next4、填写项目名,然后点击Finish5、在“src”目录上右击,选择“New”->“JavaClass”6、填写类名,然后点击OK7、程序写完后点击绿色的箭头8、选择第一项9、完成。程序的输出显示

2024-06-26 11:44:04
php怎么设置session
php怎么设置session

php怎么设置session如何在php中使用会话原始php的会话简单使用如下:12345session_start();//第一次打开会话$_SESSION[用户]=用户名;//将用户名放入$_SESSION[用户]echo$_sessionin[用户];//直接输出用户名session_destroy();session文件的命名规则?session文件的命名格式是

2024-10-20 10:36:26
discuz怎么设置邮箱验证discuz邮件设置
discuz怎么设置邮箱验证discuz邮件设置

PHP用正则表达式做注册页面//定义正则表达式$username_pattern="/^[a-zA-Z0-9_-]{3,16}$/";//用户名必须是3-16位英文字母、数字、下划线或短横线$password_pattern="/^[a-zA-Z0-9_-]{6,18}$/";//密码必须是6-18位英文字母、数字、下划线或短横线$email_pattern="/^([\w\.\

2024-07-22 04:08:22
java main函数怎么设置参数
java main函数怎么设置参数

java的主程序入口,参数?其中,Yippee是类名,public是它的修饰符,每个java文件中,最多可以有一个public的类,且这个类的名称要和java文件名一样。main方法,是java程序的入口,String[]args,是它的参数,一个字符串数组。一楼的兄弟的说法是错误的。他运行没有结果,是因为这个程序他应该是在IDE工具中运行的,运行时,工具会自己给这个方法传入一个空数组的

2024-05-27 03:31:47
php怎么设置可跨域
php怎么设置可跨域

phpStudy搭建本地后台环境并解决跨域问题之前写了一篇,用express搭建后台模拟接口数据。现在要使用PHP写后台接口(笔者用的时ThinkPHP),怎么用phpStudy搭建个本地服务呢。到这里就配置好了,在浏览器中访问www.test.com就可以打开后台了。用ajax,axios等调用后台接口时,同样会遇到接口跨域访问的问题,报错如下。应该还要其他的方法搭建

2024-11-17 06:40:41
wp php time limit怎么设置
wp php time limit怎么设置

wpphptimelimit怎么设置第一set_time_limit(0)长连接的实现每次访问PHP脚本的时候,都是当所有的PHP脚本执行完成后,我们才得到返回结果。如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达庆滑到运行目的。每个PHP脚本都限制了执行时间,所以我们需要通过set_time_limit来设置一个脚本的执行时间为无限长;然后使用flush(

2024-12-05 12:15:57
excel怎么设置宽度 php
excel怎么设置宽度 php

php怎样读取excel表格内容?常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。\x0d\x0a\x0d\x0a1.以.csv格式读取\x0d\x0a\x0d\x0a将.xls转换成.csv的文本格式,然后再用PHP分析这个文件,和PHP分析文本没有什么区别。\x0d\x0a\x0d\x0a优点:跨平台,效率比较高、可以读写。\

2025-01-05 06:22:28
js 函数怎么设置默认参数
js 函数怎么设置默认参数

PHP声明带有默认值的参数方法,调用时传参问题1、打开HBuilderX工具,新建JavaScript文件并在定义一个函数searchUser,传入三个对象参数,第三个参数及默认值100。2、在函数下面调用这个函数,传入参数为空,查看函数中打印结果。3、由于在HBuilderX工具中不能直接运行JS文件,需要将这个引入到HTML5页面中。4、要在JavaScript文件中

2024-07-22 03:16:20