PHP最大连接数的设置及php-fpm高并发参数调整

服务器中找到php-fpm.conf配置(有的会在引入的www.conf中)

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = static
pm.max_children = 200
pm.start_servers = 40
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests=1000
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log 

---------------------------------------------------------------------------

pm.max_children=30
pm.max_requests=500
pm.start_servers=4
pm.max_spare_servers=30

一. pm= static

首先说一下pm这个值 pm = dynamic 这个是php的进程数是动态的 会根据访问量来确定来回增加

而在高负载的php环境下我推荐设置 pm= static php-fpm进程数固定

二. pm.max_children=???

当用静态模式下 进程数确定根据 pm.max_children来进进行确定 那么问题来了我的服务器应该设定多少php-fpm呢 ?

从理论的角度上说php-fpm进程数越多越好,相当于一个酒店有很多个充足的服务员来为你服务肯定会比较爽啊 ,你也不需要等待。

但是。。。。现实上总是残酷的 php-fpm的进程数会受到你的内存大小的限制。一般情况下我们 进程数 =用机器内存(M)除以2 再除以20(M);

当然这个也不是绝对的 你需要知道:

1、你可以分配给php多大内存 :你的服务器上是不是单纯的php服务器 有没有比较耗费内存的其他程序(mysql)。

2、你的每个php-fpm内存占多大 :内存占用多大要根据你的php代码质量和处理的相关业务。当然你可以用命令去统计你的php-fpm平均占用内存大小。

有人会问我如果设置不恰当会有什么状况出现呢?

   当数值偏小时请求到nginx会无法分配到php-fpm进程 导致502错误 PHP最大连接数的设置及php-fpm高并发参数调整

当数值偏大如果没有大访问量还好 如果访问量较大的话 内存都会被php占光了。导致系统响应缓慢 cpu-system 升高 系统不断的去调整内存分配

严重时会导致较高的 cup-wait 较高 内存不够用了 直接写磁盘 磁盘io直线增加 。cpu使用率也开始爆满。(如图所示)

PHP最大连接数的设置及php-fpm高并发参数调整

三.request_terminate_timeout

计算方式如下:如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有循环或BUG的话你可以直接将”request_terminate_timeout”设 置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。

而如果你做不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你给”request_terminate_timeout”赋一个值,这个值可以根 据你服务器的性能进行设定。

一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。

四.pm.max_requests

这个参数的含义是php-fpm工作进程处理完多少请求后自动重启,主要目的就是为了控制请求处理过程中的内存溢出,使得内存占用在一个可接受的范围内。比较适用于服务器搭载项目比较杂乱,有点请求会比较占用内存

导致php-fpm占用比较大。在经过一定次数请求后会结束掉进程,释放自己的内存。如果这个值太小就会导致所有的工作进程几乎同时达到这个值并且进入需要重启的状态,当所有的工作进程都在同一时刻重启就会发生在

数秒内甚至更长的时间PHP将停止响应直到所有的进程均重启完为止。这是不能接受的,所以我一般会把这个值设置为PHP启动后第一批工作进程达到此值需要重启时,第一个进程重启与最后一个进程重启之间的时间相差

1分钟以上,一般在压力比较大的晚上这个差值将会扩大到5分钟左右,此时对进程重启对服务器的负面影响就可以忽略了。

下面补充几个命令统计相关php-fpm 相关数据

1、查看php-fpm的进程个数

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

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

ps -ylC php-fpm --sort:rss

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

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

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

pmap $(pgrep php-fpm) | less

重启php-fpm

1. 停止命令
 
 pkill php-fpm
 
2.重启或启动命令
 
php-fpm -R

或
/alidata/server/php/sbin/php-fpm

关于PHP最大连接数的设置及php-fpm高并发参数调整的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/44707.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2022年6月27日 00:31
下一篇 2022年6月27日 00:31

相关推荐

  • PHP入门指南:文件包含漏洞。

    PHP是一种广泛使用的服务器端编程语言,许多网站和应用程序都使用PHP作为其后端开发语言。然而,与所有编程语言一样,PHP也有其漏洞和安全问题。本文将重点介绍PHP文件包含漏洞,并提供一些简单的建议来帮助您保护…

    2023年5月23日
    01
  • PHP中使用Redis实现分级存储。

    随着互联网业务的快速发展,数据量的增长速度也越来越快。在这样大规模的数据处理中,如何高效地存储和快速访问数据成为了一个亟待解决的问题。传统的关系型数据库存储方式已经无法满足需要,因此,非关系型存储系…

    2023年5月21日
    03
  • PHP与数据流处理的集成。

    随着数据处理需求不断升级,以及大数据应用的普及,数据流处理技术在近年来得到了广泛的应用。数据流处理技术的目的是在数据流中实时处理数据,以及在处理过程中同时产生新的数据流结果。PHP是一种非常流行的Web编…

    2023年5月21日
    04
  • Cookie的应用案例

    显示用户访问时间,如果是第一次访问服务器,显示第一次访问,时间为xxx;如果是不是第一次访问,则显示上次访问时间为xxx 思考:想要读取到上次访问这个页面时的时间,由于http协议无状态的,所以默认情况下无法读…

    2018年9月13日 PHP自学教程
    0248
  • PHP使用Closure创建匿名函数的方法介绍

    Closure 类用于代表匿名函数的类。这个类不能实例化,里面主要有两个方法,都用来复制闭包,一个静态一个动态,下面分别详细讲解下这两个不好理解的方法。Closure::bindpublic static Closure Closure::bind ( Clos…

    2022年6月13日
    0129
  • 重蔚php学习第三十一天——关于二维数组

    定义: 数组元素本身是一维数组,那么,这个数组就是二维数组 语法: $数组名=array( [key=>]array(‘key’=>value,’key’=>value), [key=>]array(‘key’=>value,’key’=>value), [key=>]array(‘ke…

    2017年10月9日 PHP自学教程
    0354
  • PHP入门指南:PHP和XML。

    PHP是一种流行的Web编程语言,已经被广泛应用于互联网和企业应用。PHP可以动态生成Web页面,提供功能强大的数据处理和交互。而XML是一种可扩展的标记语言,可以用来描绘复杂的数据结构和关系,是数据交换和存储的重…

    2023年5月30日
    01
  • PHP调用网建科技短信接口实现短信发送。

    PHP调用网建科技短信接口实现短信发送随着移动互联网的快速发展,短信已经成为人们日常生活中必不可少的通信方式之一。企业也经常使用短信来进行业务的推广和服务的提醒。而如何方便地实现短信发送就成了一个关键性…

    2023年5月23日
    01

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息