好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php默认子进程 php默认站点目录

很多站长朋友们都不太清楚php默认子进程,今天小编就来给大家整理php默认子进程,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php-fpm 什么时候开始创建新的子进程 2、 php如何把自身进程设置为系统进程 3、 502 bad gateway怎么解决 4、 PHP 到底是单进程还是多进程 php-fpm 什么时候开始创建新的子进程

服务器出现异常,网站不能正常访问。经排查�php的问题。

在重启php-fpm时,恢复正常。1分钟之后又出现故障。查看php日志文件/usr/local/php/var/log 后提示

WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

子进程数已经达到设置的最大值。

要设置php进程数量。需要在php-fpm.conf文件中修改。

先看/usr/local/php/etc/php-fpm.conf文件各项配置解析

pid = run/php-fpm.pid

#pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启

error_log = log/php-fpm.log

#错误日志,默认在安装目录中的var/log/php-fpm.log

log_level = notice

#错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.

emergency_restart_threshold = 60

emergency_restart_interval = 60s

#表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。

process_control_timeout = 0

#设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.

daemonize = yes

#后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。

listen = 127.0.0.1:9000

#fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’. 每个进程池都需要设置.

listen.backlog = -1

#backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:

listen.allowed_clients = 127.0.0.1

#允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接

listen.owner = www

listen.group = www

listen.mode = 0666

#unix socket设置选项,如果使用tcp方式访问,这里注释即可。

user = www

group = www

#启动进程的帐户和组

pm = dynamic #对于专用服务器,pm可以设置为static。

#如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:

pm.max_children #,子进程最大数

pm.start_servers #,启动时的进程数

pm.min_spare_servers #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程

pm.max_spare_servers #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

pm.max_requests = 1000

#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ’0′ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.

pm.status_path = /status

#FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到

ping.path = /ping

#FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。

ping.response = pong

#用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.

request_terminate_timeout = 0

#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的’max_execution_time’因为某些特殊原因没有中止运行的脚本有用. 设置为 ’0′ 表示 ‘Off’.当经常出现502错误时可以尝试更改此选项。

request_slowlog_timeout = 10s

#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 ’0′ 表示 ‘Off’

slowlog = log/$pool.log.slow

#慢请求的记录日志,配合request_slowlog_timeout使用

rlimit_files = 1024

#设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。

rlimit_core = 0

#设置核心rlimit最大限制值. 可用值: ‘unlimited’ 、0或者正整数. 默认值: 系统定义值.

chroot =

#启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.

chdir =

#设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时)

catch_workers_output = yes

#重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空.

根据以上配置的解析,在php-fpm.conf文件中添加如下配置:

pm.max_children = 100

pm.start_servers = 30

pm.min_spare_servers = 20

pm.max_spare_servers = 100

以观后效。

另附豆瓣技术贴:

1、php-fpm优化参数介绍

他们分别是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。

pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。

在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。

下面4个参数的意思分别为:

pm.max_children:静态方式下开启的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进程数

2、服务器具体配置

对于我们的服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。

这也是为什么开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。

对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。

因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到,比如8GB内存可以设置为100,

那么php-fpm耗费的内存就能控制在 2G-3G的样子。如果内存稍微小点,比如1G,那么指定静态的进程数量更加有利于服务器的稳定。

这样可以保证php-fpm只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。

对于小内存的服务器来说,比如256M内存的VPS,即使按照一个20M的内存量来算,10个php-cgi进程就将耗掉200M内存,那系统的崩溃就应该很正常了。

因此应该尽量地控制php-fpm进程的数量,大体明确其他应用占用的内存后,给它指定一个静态的小数量,会让系统更加平稳一些。或者使用动态方式,

因为动态方式会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。

比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比如服务器上只是部署php环境的话,比较合适的值在5~10之间。

本服务器配置

1、服务器基本信息:

硬盘:数据盘30G、系统盘20G

内存:1.5G

CPU:双核

系统:CentOS 6.3 64位

带宽:独享2M

2、部署的应用

Git、SVN、Apache、Tomcat、PHP、Nginx、mysql、JDK

3、优化后的参数

pm = dynamic

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

php如何把自身进程设置为系统进程

进程管理-防止进程成为僵尸进程

创建好了进程,那么怎么对子进程进行管理呢?

使用信号,对子进程的管理,一般有两种情况:(推荐学习:PHP编程从入门到精通)

posix_kill():此函数并不能顾名思义,它通过向子进程发送一个信号来操作子进程,在需要要时可以选择给子进程发送进程终止信号来终止子进程;

pcntl_waitpid():等待或返回fork的子进程状态,如果指定的子进程在此函数调用时已经退出(俗称僵尸进程),此函数将立刻返回,并释放子进程的所有系统资源,此进程可以避免子进程变成僵尸进程,造成系统资源浪费;

孤儿进程:父进程挂了,子进程被pid=1的init进程接管(wait/waitpid),直到子进程自身生命周期结束被系统回收资源和父进程 采取相关的回收操作

僵尸进程:子进程exit退出,父进程没有通过wait/waitpid获取子进程状态,子进程占用的进程号等描述资源符还存在,产生危害:例如进程号是有限的,无法释放进程号导致未来可能无进程号可用

**父进程中使用:pcntl_wait或者pcntl_waitpid的目的就是防止worker成为僵尸进程

作用:使用pcntl_wait()后,在子进程死掉后,父进程也会被停止**

最后我们通过下图来简单的总结和描述这个多进程实现的过程:

a34c883897ee2a99833e0ad1e26c1fd4.png

进程管理-进程间通信

队列:如Redis,推荐

socket:推荐

管道:实现复杂,且管道(pipe),使用文件形式存在,存在硬盘IO性能瓶颈

信号:承载信息量少,不好管理

进程管理-切换为守护进程

使用实现

php deadloop.php

相关资源:Nginx使用的php-fpm的两种进程管理方式及优化-其它代码类资源...

打开CSDN APP,看更多技术内容

php 进程管理,PHP 进程管理器 PHP-FPM_阿喵看海外的博客

php-fpm是PHP的一个进程管理器。php下面的众多work进程皆有php-fpm进程管理器管理。 php-fpm的工作原理 php-fpm全名是PHP FastCGI进程管理器。php-fpm启动后会先读php.ini,然后再读相应的conf配置文件,conf配置可以覆盖php.ini的配置。

继续访问

php-fpm解读-进程管理的三种模式_april2nd的博客_php-fpm...

php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worker模型。每个worker都在accept本pool内的监听套接字(linux已不存在惊...

继续访问

浅谈PHP进程管理

这篇文章是对之前一篇文章的补充和改进, 创建一个主(master)进程,主进程安装定时器,每隔5分钟检测一次队列长度,根据队列长度计算需要的worker进程, 然后创建或者杀掉子进程。这样做的好处是防止队列堆积,任务得不到及时处理。更新业务代码,只需要reload操作即可。 整个流程有以下知识点: 创建守护进程的步骤: 设置默认文件权限 fork一个进程,父进程退出 调用setsid创建一个新的会话 将当前工作目录更改为根目录 关闭不再需要的文件描述符 使用信号实现定时器 上一篇定时器依赖于系统的定时任务,这次使用闹钟信号实现,php 5.3.0以下的版本依赖于ticks,

php 脚本 fpm缓存,PHP生命周期及fpm(FastCGI进程管理器)的运作方式

PHP在web方式中如何改了文件就立即生效的,重要的几个概念:sapi: 可以简单的理解为php引擎对外的一个统一接口,使得php可以和外部程序进行交互php的生命周期中关键四个调用: MINT -> RINT -> RSHUTDOWN -> MSHUTDOWNfpm: fastcgi进程管理器fpm方式的流程就是:fpm通过sapi接口与php进程交互1.fpm启动会调用各扩展...

继续访问

Linux下搭建PHP开发环境,Php-Fpm进程管理。_黑夜开发者的博客

目前PHP项目开发几种比较流行的架构搭建中,LNMP在性能方面是最好的,正因为如此,使得LNMP架构逐渐流行起来,今天,前面提到了Nginx部署,由于项目实际环境的需要,今天就在说一下怎么部署PHP。 环境 ...

继续访问

php而为,为高负载而生的 PHP 进程管理器 —— PHP-PM (PPM)

PHP-PM 可以用于php应用程序的进程管理,增压和负载均衡.它使用 ReactPHP 实现php的事件驱动和非阻塞I/O。 它是基于 ReactPHP,最好是工作在基于请求-响应式的框架,像Symfony的HTTPKernel。这样做是为了减少php启动(包括变量声明,加载和...

继续访问

最新发布 php进程管理

php 进程管理 tasks 过多

继续访问

PHP进程实现管理

运行环境为Linux,模式为CLI DEMO /*要创建的子进程*/ $manager = [ 'work1', 'work2', 'work3', ]; /*当前进程名称*/ $status = file_exists('/proc/' . getmypid() . '/status'); $bash = '-'; if ($status) { $bash = file('/proc/' . getmypid() . '/status', FILE_IGNORE.

继续访问

php的管理进程管理利器--php-fpm_weixin_33778778的博客

mod_php 模式是将php模块安装到apache中,所以每一次apache结束的请求呢,都会产生一条进程,这个进程就完整的包括php的各种运算计算等操作。 从图中我们很清晰的可以看到,apache每接收一个请求,都会产生一个进程来连接php通过sapi来完成请求...

继续访问

php-frm进程管理,PHP内核探索-进程管理

进程管理方式首先我们了解一下php的三种不同的进程管理方式:static:静态管理进程。在启动时,master按照pm.max_children配置fork出对应数量的work进程,即work的进程是固定不变的。dynamic:动态管理进程。在fpm启动时先按照pm.start_servers初始化一定数量的work进程,运行期间如果master发现空闲work进程低于pm.min_spare_s...

继续访问

理解php-fpm的两种执行方式

前段时间配置php-fpm的时候,无意间发现原来他还有两种执行方式。与Apache一样,他的进程数也是可以根据设置分为动态和静态的。关于Apache的工作方式及对应的设置方法,我已经在《Ubuntu下配置Apache的Worker模式》一文中写出,这里不再多说。 而php-fpm也是同样存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少;另一...

继续访问

php进程原理_PHP进程管理器php-fpm的工作原理

PHP进程管理器php-fpm的工作原理发布时间:2020-07-21 17:46:39来源:亿速云阅读:133作者:小新今天小编给大家分享的是PHP进程管理器php-fpm的工作原理,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。php-fpm是什么php-fpm是PHP的一个进程管理器。php下面的众多work进程皆有php-fpm进程管...

继续访问

如何管理php常驻进程,一看就懂系列之 如何实现与控制php常驻进程-Go语言中文社区...

前言关于如何实现与控制php常驻进程,不管是google还是baidu上进行搜索,都没有感觉看起来赏心悦目的解答,于是决定自己动手总结下。有同学会问了,整这个干甚?简单的说就是,可以让一个php脚本一直处于运行的状态。从而实现将项目中某些耗时操作异步化,进队列后由php脚本取出再执行。有同学又会问了,直接在服务器直接命令“php test.php ”,不就可以实现了?那么这样做的话有三点...

继续访问

PHP-FPM(PHP进程管理器)

PHP-FPM

继续访问

php 进程管理,从 0 到 1 优雅的实现 PHP 多进程管理

_| |_ __ __ _ _ __ _ _| |_ ___| '_ \ / _` | '__| | | | __/ _ \| | | | (_| | | | |_| | || (_) ||_| |_|\__,_|_| \__,_|\__\___/ .TIGERB.cnAn object-oriented multi process manager for PHPVersion: 0...

继续访问

php-fpm进程管理的三种模式

转载自 php-fpm解读-进程管理的三种模式 —程序媛大丽 标明转载以示尊重 感谢原作者的分享。 php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worker模型。每个worker都在accept本pool内的监听套接字(linu...

继续访问

php 进程管理那点事

之前本地开发和环境一直用的集成环境,最近新项目 集成了php7+nginx 跑了一段时间发现偶尔 有php进程退出的情况 排查原因 nginx log: 1111 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after ...

继续访问

从0到1优雅的实现PHP多进程管理

_ | | _ __ __ _ _ __ _ _| |_ ___ | '_ \ / _` | '__| | | | __/ _ \ | | | | (_| | | | |_| | || (_) | |_| |_|\__,_|_| \__,_|\__\___/ ...

继续访问

热门推荐 php-fpm安装、配置与优化

转载自: 1、php中fastcgi和php-fpm是什么东西 最近在研究和学习php的性能方面的知识,看到了factcgi以及php-fpm,发现我对他们是少之又少的理解,可以说几乎是一无所知,想想还是蛮可怕的。决定仔细的学习一下关于这方面的知识。 参考和学习了以下文章: 1. mod_php和

继续访问

php-fpm的两种进程管理模式

php-fpm的两种进程管理模式 php-fpm的进程数也是可以根据设置分为动态和静态的。 一种是直接开启指定数量的php-fpm进程,不再增加或者减少; 另一种则是开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态的增加php-fpm进程数到上限,当空闲的时候自动释放空闲的进程数到一个下限。 这两种不同的执行方式,可以根据服务器的实际需求来进行调整。 这里先说一下涉及

继续访问

7、Php-Fpm进程管理

1、进程管理 php-fpm采用的是master-worker的进程方式。其中, master负责监听端口,等待链接;其次,注册信号,可以通过信息好master进行管理 worker负责处理具体的逻辑 如下图所示 2、信号管理 master进程可以理解如下信号 信号 含义 INT, TERM 立刻终止 ...

继续访问

php进程控制

简介 PHP的进程控制支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断。 进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果。 这份文档用于阐述每个进程控制函数的通常用法。关于Unix进程控制的更多信息建议您查阅 系统文档中关于fork(2),waitpid(2),signal(2)等的部分或更全面的参考资料比如 《Unix环境高级编程》

继续访问

php进程管理

php 进程管理

502 bad gateway怎么解决

502badgateway要先找到nginx配置的路径。

然后找到nginx所在的error日志文件来查看具体原因。

如果是客户端浏览器配置的问题,以360浏览器为例,出现502BadGateway可能是设置了代代理导致的。

取消浏览器代理之后,刷新一下就可以访问了。

502BadGateway是一种报错提示,这一错误并不意味着上游服务器已关闭(无响应网关/代理),而是上游服务器和网关/代理不同意的协议交换数据。

鉴于互联网协议是相当清楚的,它往往意味着一个或两个机器已不正确或不完全编程。

PHP 到底是单进程还是多进程

一般都是多进程,由php-fpm或者fastcgi开启并管理的。这个没什么意义。

你应该想问的是PHP是单线程还是多线程。

一般PHP是默认单线程的,不过可以用php插件来支持多线程模式。

关于php默认子进程的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php默认子进程 php默认站点目录的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did207984
更新时间:2023-05-03   阅读:20次

上一篇: php点餐小程序 thinkphp点餐小程序源码

下一篇:php中change的简单介绍

相关资讯

最新资料更新

  • 1.php图书管理系统 php图书管理系统全部代码
  • 2.phpwhere循环 php中的循环
  • 3.phpword导出 phpspreadsheet导出
  • 4.JavaPHP你好 java welcome
  • 5.vip影院php后台版 vip影视电视剧电影
  • 6.php项目任务分配 php任务调度框架
  • 7.包含phpgetitems的词条
  • 8.notepad写php notepad可以写c语言吗
  • 9.phpsmtp配置项 php 配置
  • 10.php跳转url源码 网页跳转源码
  • 11.php5.4.13的简单介绍
  • 12.php会做流控吗 php流程控制
  • 13.PHP中嵌入script php嵌入html有哪几种方法
  • 14.什么是php行为 什么是php,php有哪些优点
  • 15.php_syntax的简单介绍
  • 16.php协议input php协议,json
  • 17.php图片打不开 php打不开文件
  • 18.php系统源代码下载 php源码免费下载
  • 19.免费php空间shery 免费PHP空间 免备案 V52版本
  • 20.php消息通知实例的简单介绍

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]