php怎么设置并发连接数

本文操作环境:windows10系统、PHP 7、thinkpad t480电脑。

首先我们需要在服务器中找到php-fpm.conf配置(也有可能会在引入的www.fong配置中)

找到如下内容:

[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);

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

你可以分配给php多大内存 :你的服务器上是不是单纯的php服务器 有没有比较耗费内存的其他程序(Mysql)。 你的每个php-fpm内存占多大 :内存占用多大要根据你的php代码质量和处理的相关业务。当然你可以用命令去统计你的php-fpm平均占用内存大小。

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

当数值偏小时请求到Nginx会无法分配到php-fpm进程 导致502错误

b84533a9dbf5b505ff5abb4564b8cf8.png

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

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

07d406dd10da893862b7e501b182c17.png

三.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 相关数据

查看php-fpm的进程个数

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

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

ps -ylC php-fpm --sort:rss

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

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

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

pmap $(pgrep php-fpm) | less

重启php-fpm

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

--结束END--

本文标题: php怎么设置并发连接数

本文链接: https://www.lsjlt.com/news/182.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • php怎么设置并发连接数

    php设置并发连接数的方法:1、找到php-fpm.conf配置;2、编辑选项【pm= static】、【request_terminate_timeout】、【pm.max_requests】。
    阅读数:616 php 并发 连接数
  • PHP连接数据库

    PHP 连接数据库1.连接数据库函数 mysqli_connect(主机名,用户名,密码)返回值 是我们的一个连接对象 如果连接失败 报错 返回false2. 判断错误函数mysqli_connect_error(连接对象)错误
    阅读数:230 mysql
  • php 中怎么使用pdo连接数据库

    本篇文章为大家展示了php 中怎么使用pdo连接数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。要用php连接数据库首先要要实例化pdo的类,并且要有数据源,服务器账号,服务器密码。  数据源是
    阅读数:219 php pdo
  • 用php连接数据库失败怎么办

    用php连接数据库失败的解决办法:1、打开php.ini配置文件,去掉“extension=php_mysql.dll”前面的注释分号,并通过extension指定“php_mysql.dll”的绝对路径;2、修改mysql的my.ini配置文件;3、修改数据集字符集即可。
    阅读数:329 php 数据库
  • 如何用php pdo连接数据库

    本篇内容介绍了“如何用php pdo连接数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!要用php连接数据库首先要要实例化pdo的类,并
    阅读数:904 pdo php
  • php怎么连接mysql

    php连接mysql的方法:在php中,这个任务通过 mysql_connect() 函数完成。注意要确定mysql服务是启动的,并且需要输入您mysql的相关信息。$con = mysql_connect("数据库名","用户名","密码
    阅读数:144 mysql PHP
  • php怎么实现两数相除取整

    php实现两数相除取整的方法:1、利用“/”运算符进行除法运算,语法“数值1 / 数值2”;2、利用取整函数intval()、round()、ceil()或floor()对除法运算的结果进行取整即可。
    阅读数:425 php 相除取整
  • php怎么将字母转为10进制数

    在php中,可以利用ord()函数来将字母转为10进制数,该函数可以返回单个字符的ASCII值,或字符串中第一个字符的ASCII值,语法“ord("指定字母")”。
    阅读数:918 php 字母转为10进制数
  • php 怎么设置空格

    php设置空格的方法:1、创建一个PHP示例文件;2、通过“function white_space( $string, $whitespace ){...}”方法设置空格即可。
    阅读数:113 php 空格
  • php怎么设置星期

    php设置星期的方法:1、通过“date("w");”方法获取数字星期;2、通过“$weekarray[date("w")];”方法获取中文星期;3、通过“date("w",strtotime("..."))”方法获取指定日期。
    阅读数:601 php
  • php源码安装、简单配置、测试及连接数据库

    主机环境 redhat6.5 64位实验环境 服务端 ip172.25.29.1php安装包 php-5.6.20.tar.bz2re2c-0.13.5-1.el6.x86_64.rpmlibmcry
    阅读数:267 主机 数据库 local
  • PHP连接数据库实现页面增删改查效果

    这篇文章主要介绍了如何利用PHP实现连接SQL数据库,从而对页面进行增删改查功能,文中的示例代码讲解详细,感兴趣的可以了解一下
  • php 汉字怎么转阿拉伯数

    php汉字转阿拉伯数的方法:1、创建一个PHP示例文件;2、初始化一个数组;3、将字符串按单位切分;4、将分组后的字符串转化成数字并乘以单位即可。
    阅读数:168 php
  • PHP中怎么连接MSSQL

    今天就跟大家聊聊有关PHP中怎么连接MSSQL,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  PHP连接MSSQL的实现方法。ms SQL是指微软的SQLServer数据库服务器,
    阅读数:169 php mssql
  • php 怎么设置本地时间

    php设置本地时间的方法:1、在页头使用“date_default_timezone_set()”设置默认时区为北京时间;2、在php.ini中设置“date.timezone”的值为PRC即可。
    阅读数:270 php
  • php 怎么设置input只读

    php设置input只读的方法:1、打开相应的代码文件;2、通过“<input type="text" readonly>”方式设置input只读即可。
    阅读数:803 php input 只读属性
  • php curl怎么设置cookie

    php curl设置cookie的方法:1、创建PHP示例文件;2、通过curl_setopt函数设置cURL传输选项;3、在CURL中传递cookie即可。
    阅读数:655 php curl cookie
  • php怎么设置oracle编码

    php设置oracle编码的方法:1、获取oracle的字符集;2、运行“select * from V$NLS_PARAMETERS;”;3、通过iconv函数进行编码转换即可。
    阅读数:773 php oracle
  • php怎么设置警告等级

    php设置警告等级的方法:1、在php.ini里修改error_reporting选项;2、在php页面里用error_reporting()函数来修改报错级别。
    阅读数:937 php
  • php怎么设置变量类型

    php中,可利用settype()函数来设置变量类型,语法“settype($var,"数据类型")”;数据类型值可为“boolean”、“integer”、“float”、“string”、“array”、“object”、“null”。
    阅读数:853 php 变量类型