我的编程空间,编程开发者的网络收藏夹
学习永远不晚

php怎么设置并发连接数

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

php怎么设置并发连接数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php怎么设置并发连接数

php设置并发连接数的方法:1、找到php-fpm.conf配置;2、编辑选项【pm= static】、【request_terminate_timeout】、【pm.max_requests】。
2018-02-06

nginx怎么限制并发连接数

要限制Nginx的并发连接数,可以使用Nginx的limit_conn模块。下面是一些常见的配置示例:全局限制并发连接数:在Nginx的配置文件中添加以下代码,将最大并发连接数限制为100:http {limit_conn_zone $
2023-10-25

mysql连接数怎么设置

需要通过修改配置文件 my.cnf 中的 max_connections 设置来设置 mysql 连接数。详细步骤如下:找到 my.cnf 配置文件。将 max_connections 设置为所需的最大连接数。保存 my.cnf 文件。重启
mysql连接数怎么设置
2024-05-21

怎么设置MySQL的连接数

本文小编为大家详细介绍“怎么设置MySQL的连接数”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么设置MySQL的连接数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MySQL的
2023-04-12

sqlserver最大并发数怎么设置

SQL Server 的最大并发数是由其配置和硬件资源决定的,可以通过以下几种方式来设置最大并发数:修改数据库连接池的最大连接数:可以通过修改数据库连接池的配置参数来设置最大并发数,例如在连接字符串中指定最大连接数的值。配置 SQL Ser
sqlserver最大并发数怎么设置
2024-04-09

mysql数据库连接数怎么设置

在MySQL中可以通过修改配置文件来设置数据库连接数。具体步骤如下:打开MySQL的配置文件。在Linux系统中,配置文件通常位于/etc/mysql/my.cnf,而在Windows系统中,配置文件通常位于C:\ProgramData\M
mysql数据库连接数怎么设置
2024-04-09

redis最大连接数怎么设置

在Redis中,最大连接数是由maxclients参数控制的。可以通过修改Redis配置文件redis.conf来设置最大连接数。打开redis.conf文件,在maxclients参数下添加或修改以下设置:maxclients 100
redis最大连接数怎么设置
2024-04-09

docker怎么部署mysql8并设置可远程连接

本文小编为大家详细介绍“docker怎么部署mysql8并设置可远程连接”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker怎么部署mysql8并设置可远程连接”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
2023-07-02

PHP怎么连接MySQL数据库并获取数据

要连接MySQL数据库并获取数据,你可以使用PHP中的mysqli扩展或PDO扩展。下面是一个示例代码,演示如何连接MySQL数据库并获取数据:使用mysqli扩展:// 连接数据库$servername = "localhost";$
PHP怎么连接MySQL数据库并获取数据
2024-05-06

golang的最大并发数怎么设置

Golang中的最大并发数是由操作系统的默认限制和Golang运行时的配置共同决定的。在Golang中,可以通过以下几种方式来控制最大并发数:使用runtime.GOMAXPROCS(n)函数设置Golang程序的最大并发数。该函数将Gol
golang的最大并发数怎么设置
2024-02-29

laravel数据库连接池怎么设置

在Laravel中设置数据库连接池可以通过在config/database.php配置文件中进行设置。您可以使用connections数组中的options键来配置连接池的相关选项。以下是一个示例配置数据库连接池的代码:'my
laravel数据库连接池怎么设置
2024-03-04

springboot接口并发数限制怎么配置

要限制Spring Boot接口的并发数,可以使用线程池来控制并发访问。可以通过配置Spring Boot的线程池来限制并发数。1. 在application.properties文件中添加线程池相关的配置:```properties# 设
2023-10-11

Storm并发度怎么设置

本篇内容介绍了“Storm并发度怎么设置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  Storm架构:master/slave  主节点
2023-06-02

mysql怎么设置短连接

要设置MySQL短连接,可以通过修改MySQL的配置文件my.cnf来实现。以下是设置MySQL短连接的步骤:1. 打开MySQL的配置文件my.cnf。在Linux系统中,该文件通常位于/etc/mysql/my.cnf或/etc/my.
2023-08-16

mysql数据库最大连接数怎么设置

MySQL数据库的最大连接数可以通过修改配置文件来进行设置。配置文件通常是my.cnf文件(Linux系统)或my.ini文件(Windows系统)。打开配置文件,在[mysqld]部分添加或修改以下行:max_connections
mysql数据库最大连接数怎么设置
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录