推荐:《PHP视频教程》

服务器中找到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占光了。导致系统响应缓慢 cpu-system 升高 系统不断的去调整内存分配

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

三.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-fpm1. 停止命令

pkill php-fpm

2.重启或启动命令

php-fpm -R

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

php fpm最大连接数,PHP最大连接数的设置及php-fpm高并发参数调整相关推荐

  1. nodeJS express mysql 高并发时连接数不够用问题 以及如何处理高并发

    首先 描述下问题,前段时间接到了通知,做nodejs高并发代码优化,于是开始整咯,首先用loadrunning模拟高并发,问题就来了,到高并发路由的时候,会出现数据库连接数不够用的情况.查询了代码,都 ...

  2. Linux下高并发socket最大连接数所受的各种限制

    修改最大打开文件数 # ulimit -n 修改最大进程数 # ulimit -u ------------------------------------------------------ Lin ...

  3. linux socket文件数限制,Linux下高并发socket最大连接数所受的限制问题

    Linux下高并发socket最大连接数所受的限制问题1.修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时, 最高的并发数量都要受到系统对 ...

  4. mysql用户连接数_mysql用户连接数

    命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列 ...

  5. node mysql limit_node中mysql连接池的connectionLimit指什么,它和mysql的最小连接数和最大连接数的关系是什么?...

    问题1:node中mysql连接池的connectionLimit指什么,它和mysql的最小连接数和最大连接数的关系是什么 问题2:mysql max_connections是什么,max_used ...

  6. 转:Linux下高并发socket最大连接数所受的各种限制

    1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...

  7. mysql增加最大连接数_mysql最大连接数怎么设置

    设置mysql最大连接数的方法:首先打开mysql的控制台:然后输入语句[set GLOBAL max_connections=1000;]即可直接设置最大连接数. 通常,mysql的最大连接数默认是 ...

  8. 实战解读丨Linux下实现高并发socket最大连接数的配置方法

    摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...

  9. Linux进程最大socket数,Linux下高并发socket最大连接数所受的各种限制(详解)

    1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...

最新文章

  1. 爬一爬那些年你硬盘存过的“老师”
  2. linux 开机错误 Entering emergency mode. Exit the shell to continue.
  3. ABAP TBL隐藏列
  4. Mat的初始化以及Mat与数组的相互转化
  5. silk 编解码_Silk编解码在android实现
  6. Spring Cloud 入门 之 Feign 篇(三)
  7. 雅虎辉煌不再,紫色血液永存
  8. struct结构体指定初始化项目
  9. mysql点击计数器_高性能Mysql(第3版)_网站点击计数器
  10. cisco 交换机 获取 转发表_看完这份1113页的TCP/IP协议+路由与交换机,成功上岸字节跳动...
  11. tcs标准编写软件_标准编写工具TCS2017使用指南.PDF
  12. 使用telnet发送email(内嵌图片,附件)
  13. LaTeX目录格式控制
  14. 对于数据混乱程度的判定准则:基尼不纯度、信息熵、方差
  15. make: *** [Makefile:44:obj/start.o] 错误 127
  16. 《计算机网络:自顶向下方法(原书第七版)》 参考答案(英文版+中文版)
  17. java list去除最后一个元素_如何快速删除list中的最后一个元素?
  18. 基于Joplin和WebDAV搭建私有云笔记
  19. Linux基础之 getopts
  20. 北美票房排行榜 实时_诸城客房管理软件排行榜

热门文章

  1. 实验一 离散时间信号分析
  2. 广联达2020写锁工具支持6.0.zip_The Unarchiver for Mac(苹果电脑解压缩工具)
  3. 斐波那契递归调用次数_递归求解斐波那契数列的时间复杂度——几种简洁证明...
  4. C#日期格式的万能转换方法
  5. iOS开发那些事-Passbook详解与开发案例(附视频)
  6. 不同的网段添加打印机(共享 网络)思路
  7. 3070网卡支持linux,RT3070网卡AP模式网速问题
  8. 用VC++制作播放AVI视频流的动画按钮
  9. C语言中预定义符 __FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__ 的使用演示
  10. php8预加载,如何利用预加载优化Laravel Model查询详解