查看: 90|回复: 4

php-fpm进程数设置多少合适

[复制链接]

4

主题

8

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2023-6-27 08:05:29 | 显示全部楼层 |阅读模式
转自本人blog
在我们做php高并发下的优化的时候,涉及到一个问题,就是fpm进程数设置多少合适,在有的文章中推荐设置为n或者n×2(n为cpu数量)
有的文档中推荐按照可用内存/30m (30m为fpm每个进程内存)
两种说法其实都没有问题,但是都忽略了一个基本的事实就是具体情况具体分析
基础知识

本段摘自 https://yq.aliyun.com/articles/33422
需要了解的参数是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。
pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。
在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。
下面5个参数的意思分别为:
pm = dynamic 如何控制子进程,选项有static和dynamic   
pm.max_children:静态方式下开启的php-fpm进程数量   
pm.max_requests: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进程数。
在高并发场景(我们公司是一万并发测试)中,一般都是采用的static方式,因为一般来说我们的服务器都是有严格的业务分离,fpm服务器就是用来作为fpm服务器使用,除去还有一个nginx之外,不会去考虑有其他的服务器占用资源。
具体问题具体分析

在php的运行中,无非是两种场景

  • 大运算
  • 高io
1 大运算的场景,即 php程序需要用大量的cpu资源来进行数据计算之类的操作,在这种场景下,fpm进程可以设置为cpu数量的一倍或者两倍
2 高io场景,php的使用场景中(最起码是本电商场景中)基本上属于高io,因为程序花了大量的时间在等待redis返回等待数据库返回。高io场景下,因为cpu大多处在wa状态下,所以可以尽量的加大fpm进程数,所以这个时候使用内存/30m是更为合理的
经过我们自己真实压测,大量redis和mysql读写的io密集情况下,16G的内存,fpm我们设置为400个的时候qps比fpm 16个 32个要好不少
回复

使用道具 举报

2

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-6-27 08:05:53 | 显示全部楼层
max_spare_servers不是最大子进程哦。the maximum number of children in 'idle'(空闲) state (waiting to process). If the number  of 'idle' processes is greater than this number then some children will be killed.(空闲时候多于这个就kill)繁忙的时候是少于max_children吧
回复

使用道具 举报

1

主题

7

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-6-27 08:06:15 | 显示全部楼层
如果static的话,没多大意义了吧。
回复

使用道具 举报

2

主题

8

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-6-27 08:06:37 | 显示全部楼层
pm.min_spare_servers:动态方式空闲状态下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式空闲状态下的最大php-fpm进程数量。
回复

使用道具 举报

5

主题

11

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2023-6-27 08:06:56 | 显示全部楼层
嗯 ,谢谢指正。有不严谨的地方,具体问题具体分析那段落有问题吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表