首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php-cgi 进程太多

基础概念

PHP-CGI(Common Gateway Interface)是一种服务器接口,用于将HTTP请求传递给PHP解释器进行处理。PHP-CGI进程是服务器上运行的独立进程,每个进程负责处理一个或多个HTTP请求。

相关优势

  1. 简单易用:PHP-CGI配置相对简单,易于上手。
  2. 兼容性好:PHP-CGI可以与多种Web服务器(如Apache、Nginx等)配合使用。
  3. 性能:每个请求都在独立的进程中处理,避免了多线程中的资源竞争问题。

类型

  • 单进程模式:每个请求都在一个新的PHP-CGI进程中处理。
  • 多进程模式:预先启动多个PHP-CGI进程,这些进程会循环处理请求。

应用场景

PHP-CGI适用于需要快速启动和处理大量并发请求的场景,尤其是在Web服务器负载较高的情况下。

问题及原因

问题:PHP-CGI进程太多。

原因

  1. 高并发请求:当服务器接收到大量并发请求时,PHP-CGI进程会迅速增加。
  2. 配置不当:Web服务器的配置可能导致PHP-CGI进程过多启动。
  3. 脚本问题:PHP脚本中可能存在死循环或其他导致进程无法正常结束的问题。

解决方法

  1. 优化Web服务器配置
    • 对于Apache,可以调整MaxRequestsPerChild参数,限制每个子进程处理的请求数量。
    • 对于Nginx,可以配置worker_processesworker_connections参数,合理分配工作进程和连接数。
    • 对于Nginx,可以配置worker_processesworker_connections参数,合理分配工作进程和连接数。
  • 使用PHP-FPM
    • PHP-FPM(FastCGI Process Manager)是PHP-CGI的升级版,提供了更好的进程管理和性能优化。
    • 配置Nginx使用PHP-FPM:
    • 配置Nginx使用PHP-FPM:
  • 优化PHP脚本
    • 确保PHP脚本中没有死循环或其他导致进程无法正常结束的问题。
    • 使用set_time_limit()函数设置脚本执行时间限制。
    • 使用set_time_limit()函数设置脚本执行时间限制。
  • 监控和日志
    • 使用监控工具(如Prometheus、Grafana)监控服务器和PHP-CGI进程的状态。
    • 查看Web服务器和PHP的日志文件,定位问题。

参考链接

通过以上方法,可以有效管理和优化PHP-CGI进程,避免进程过多导致的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解决windows+nginx下 PHP-CGI 进程崩溃问题

本地开发系统使用的是windows系统下,配置的 nginx+php,在使用过程中总是出现崩溃现象,网上搜解决办法时,很多网友说是PHP-CGI 进程崩溃 造成的,当 php-cgi 处理php 达到500...解决的办法就是使用 xxfpm,管理FastCGI进程,xxfpm可以控制启动 FastCGI的进程数量。进程挂掉后会自动启动一个新的进程。...也要进行相应的设置,其中用到了RunHiddenConsole ,需要单独进行下载:https://github.com/wenshui2008/RunHiddenConsole,-n 3 就是启动的进程数...-p 20056 是php-cgi 的端口,nginx 配置PHP时要用到 fastcgi_pass 127.0.0.1:20056;@echo offecho Stopping nginx......运行后会出现15个进程(3*5个PHP版本)上面说 当 php-cgi 处理 php 达到500次,就自动关闭,特意做了一下测试,前500次返回200,第501次时返回了 502。

1.9K40

事故记录:php-cgi进程过多导致系统资源耗尽

1)top命令查看一下系统的cpu ram swap的使用情况 由上图分析,可以看出 1--共有602个进程,但其中有601个进程休眠了。...这就有点不对劲,这台服务器的内核进程也就80个左右,加上memcached, nginx, mysqld,也不会超出90个,除了这些,剩下的只有php-fpm管理的php-cgi了。...指令top还列出了占用资源最多的进程,运行时间最久(Time+)的mysqld(约2小时)占用资源并不是最多。 4--再看php-cgi,单个php-cgi占用的内存也不算多。...从上面报告结果中可以一眼看到php-cgi这个进程。虽然单个php-cgi占用内存并不算太大,但是503个php-cgi进程,就有点恐怖了。几乎占尽了全部内存(503*0.3%)。...php-cgi由php-fpm管理,因此可以断定,是由于php-fpm配置文件php.ini中的max_children参数配置不当,才导致打开过多的php-cgi进程。

2.3K50
  • php多进程单线程之php-cgi、php-fpm

    php多进程单线程之php-cgi、php-fpm php从代码级别的执行上是单线程的, 但是由php-fpm进程管理机制是多进程单线程的, 也就是php是多进程执行的. 有效提高并发的响应效率。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...2.3 FastCGI的不足 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。...3.1 PHP-CGI 的不足 php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。

    2.3K31

    当面试官问你:nginx 如何解析php文件?

    而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。...; php-cgi 就是php的解释器 php-cgi只是个CGI程序,php-cgi是php提供给web serve也就是http前端服务器的cgi协议接口程序,,他自己本身只能解析请求,返回结果,不会进程管理....所以就出现了一些能够调度php-cgi进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。...整个过程 nginx接收php文件的请求后,通过fastcgi_pass命令将请求发送给php-fpm---php-cgi的进程管理器(在这中间,必须通过fastCGI进程管理器,是优化后的cgi,通过...master主进程和work子进程,其实就是将请求的格式规范化),就是php-cgi的进程管理者,最后还是有php-cgi去完成解析

    1.6K10

    「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务

    WinSW WinSW是一个可用于包装和管理作为Windows服务的自定义进程的工具,可以对windows中的服务程序进行管理(注册、卸载、启动、停止、重启等操作),其本质上就是一个可执行的二进制文件,...如果该服务当前未运行,则此命令会将服务启动; status检查服务的当前状态; 命令的运行格式 命令需要在WinSW.exe 所在的目录下才能执行,由于WinSW初始的名称是WinSW.exe,所以要在命令前加上进程名称...,其名称可修改为:nginx-service.exe; 在php中,名称则可修改为php-cgi-service.exe; xml 配置文件 WinSW 的服务管理的配置功能需要xml文件来完成,每个进程的...xml文件的名称需要和WinSW 进程的名称一样;如果WinSW.exe 修改成了nginx-service.exe,对应的xml文件名称就要修改为nginx-service.xml。...注册php-cgi服务 注册php-cgi服务不仅需要WinSW.exe的支持,还需要xxfpm的支持。

    74740

    「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务

    任务管理器中就能对nginx 服务和php-cgi服务进行管理。...WinSW WinSW是一个可用于包装和管理作为Windows服务的自定义进程的工具,可以对windows中的服务程序进行管理(注册、卸载、启动、停止、重启等操作),其本质上就是一个可执行的二进制文件,...,其名称可修改为:nginx-service.exe; 在php中,名称则可修改为php-cgi-service.exe; xml 配置文件 WinSW 的服务管理的配置功能需要xml文件来完成,每个进程的...xml文件的名称需要和WinSW 进程的名称一样;如果WinSW.exe 修改成了nginx-service.exe,对应的xml文件名称就要修改为nginx-service.xml。...注册php-cgi服务 注册php-cgi服务不仅需要WinSW.exe的支持,还需要xxfpm的支持。

    1.5K11

    PHP-FPM && PHP-CGI && FASTCGI

    PHP-FPM && PHP-CGI && FASTCGI CGI 早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。...当遇到动态脚本请求时,Web服务器主进程就会Fork创建出一个新的进程来启动CGI程序,运行外部C程序或Perl、PHP脚本等,也就是将动态脚本交给CGI程序来处理。...当CGI程序启动后会去解析动态脚本,然后将结果返回给Web服务器,最后由Web服务器将结果返回给客户端,之前Fork出来的进程也随之关闭。...但是因为每次请求都会使用system-fork产生一个线程去运行启动cgi程序, 而服务器能执行的进程是有限的, 所以当出现高并发的时候会使服务器崩掉 这时CGI的升级版FAST-GUI就出现了 FASTCGI...PHP-CGI PHP-CGI和上面的PHP-FPM差不多,不过不同在于PHP-FPM解析的是fastcgi协议而PHP-CGI解析的是cgi协议 一些PHP-FPM漏洞 还有一些PHP-FPM的漏洞在

    68040

    PHP-FPM发展史

    PHP-CGI PHP-CGI就是CGI协议的php版本实现。...除了协议本身的问题还有一些其他问题 比如 PHP-CGI变成php.ini配置后,需要重启php-cgi才能让新的配置生效,不可以平滑重启。 直接杀死PHP-CGI进程,php就不能运行了。...FastCGI进程管理器自身初始化,并启动多个CGI解释器进程并等待Web服务器的连接。...此时当前CGI解释器进程接着等待并处理来自FastCGI进程管理器的下一个请求。如果在CGI模式中,当前CGI解释器会在此退出。...进程将请求分发给其中一个woker进程处理,然后可以立即接受下一个请求,避免了重复的初始化操作,提升了效率 当woker进程不够用时,master进程还可以根据配置预先启动几个woker进程等着,当空闲进程太多又会关掉一些

    71820

    如何理解CGI,FastCGI,php-fpm?

    在没有php-fpm之前,每当我们修改了php.ini的配置信息,都会面临着下面的几个问题: 1.需要重启php-cgi程序,才能使配置文件生效,同时php-cgi不支持平滑重启。...2.kill掉php-cgi程序时,必须重新启动,否则PHP就不能正常工作。...因此就可以把php-fpm理解为,是一个实现了Fastcgi协议的程序,用来管理Fastcgi启动的进程的,即能够调度php-cgi进程的程序。...前者接受到一个请求就会fork一个进程,后者则是事先启动一部分的worker进程。...3、而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是Fastcgi的对进程的管理。

    97030

    FastCgi与PHP-fpm之间的关系

    而且当worker不够用时,master可以根据配置预先启动几个 worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。...大家都知道,PHP的解释器是php-cgi。php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理(皇上,臣妾真的 做不到啊!)...所以就出现了一些能够调度php-cgi进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。...有的说,php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的。php-fpm的管理对象是php-cgi。...有的说,修改了php.ini配置文件后,没办法平滑重启,所以就诞生了php-fpm 是的,修改php.ini之后,php-cgi进程的确是没办法平滑重启的。

    1.1K60

    全面了解CGI、FastCGI、PHP-FPM

    而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源,这就是fastcgi对进程的管理。...(1)Web Server启动时载入FastCGI进程管理器(Apache Module或IIS ISAPI等) (2)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可建多个php-cgi...FastCGI子进程接着等待,并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,php-cgi在此便退出了。...php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理,所以就出现了一些能够调度php-cgi进程的程序,php-fpm就是这样的一个东西。...它克服了php-cgi变更php.ini配置后,需重启php-cgi才能让新的php-ini生效,不可以平滑重启,直接杀死php-cgi进程,php就不能运行了的问题。

    2.8K12

    全面了解CGI、FastCGI、PHP-FPM

    而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源,这就是fastcgi对进程的管理。...,启动多个CGI解释器进程(可建多个php-cgi),并等待来自Web Server的连接。...FastCGI子进程接着等待,并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,php-cgi在此便退出了。...php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理,所以就出现了一些能够调度php-cgi进程的程序,php-fpm就是这样的一个东西。...它克服了php-cgi变更php.ini配置后,需重启php-cgi才能让新的php-ini生效,不可以平滑重启,直接杀死php-cgi进程,php就不能运行了的问题。

    84000

    php和php-fpm和fastcgi的关系

    接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。...CGI是个协议,跟进程什么的没关系。那fastcgi又是什么呢?Fastcgi是用来提高CGI程序性能的。...他会先启动一个master,解析配置文件,初始化环境后,启动多个work来接受请求,这样避免重复加载,而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时...这就是fastcgi的对进程的管理。 二.php-fpm和fastcgi 那PHP-FPM又是什么呢?是一个实现了Fastcgi的程序,被PHP官方收了。 大家都知道,PHP的解释器是php-cgi。...php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理(皇上,臣妾真的做不到啊!)所以就出现了一些能够调度php-cgi进程的程序。

    2.5K20

    详解 Nginx 和 php-fpm 调用方式

    而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。...大家都知道,PHP的解释器是php-cgi。php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理(皇上,臣妾真的做不到啊!)...所以就出现了一些能够调度php-cgi进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。...有的说,php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的 对。php-fpm的管理对象是php-cgi。..., ① 变更php.ini时必须重启php-cgi才能生效 ② php-cgi进程崩溃或者被杀死后php就不能运行 php-fpm 是从 php5.3.3 之后新加入的管理器,在更改 php 配置之后不需要重启

    2.6K30

    Linux 下找出吃内存的方法总结

    来自:Linux就该这么学 linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。...通过进程的 status [root@web3_u ~]# cat /proc/25282/status Name: php-cgi State: S (sleeping) Tgid: 25282 Pid...1.9 % PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S...进程启动时间 user 启动用户 以第一行为例 进程ID 23946 进程名 php-cgi 启动命令 /usr/local/php/bin/php-cgi 占用CPU 0 占用物理内存 129540...:进程的ID USER:进程所有者 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S:进程的状态。

    1.3K20

    cgi、fastcgi、php-cgi、php-fpm剖析

    定义 cgi 通用网关接口,外部程序与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程 每一次请求都会生成一个cgi进程,cgi程序执行完,进程退出 独立于服务器、独立编程语言...php官方自带的FastCGI 进程管理器 php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。...不可以平滑的重启 内存不能动态分配 php-fpm 非官方fastCgi进程管理器,后来php5.4开始,被官方收录了,编译php的时候只需要–enable-fpm 就可以开启php-fpm 可以平滑重启...php 动态调度进程 原理 cgi 以apache为例,首先要配置好cgi访问目录,访问 http://127.0.0.1/cgi-bin/printenv.pl 。...技术 php是动态脚本语言 , php5.3以前 用php-cgi 来实现 fastCgi web请求,php 5.4开始,php-fpm 取代了php-cgi ,主要原因是 不能平滑重启php ,内存不能进行动态分配

    1.3K10

    对象池、连接池的意义

    nginx与php-fpm的进程模型 nginx采用多进程模型,启动之后的进程将包含一个master和多个worker进程。...它的出现提供了更好的php管理方式 可以平滑停止/启动php进程(重载配置生效) 可以配置监控多个端口和使用不同的配置 php脚本的解释器是php-cgi php-fpm是一个管理器,管理对象是php-cgi...web服务器可以发送数据给php-fpm,php-fpm再把数据发给php-cgi处理。...new太多对象,然后导致cpu负载上线让全站死机的概念 若程序未产生IO(网络请求、读写文件等),执行时间等于cpu的占用时间。...就是一个池管理器,内部装了若干个php-cgi程序,当nginx申请解析php脚本时,php-fpm则分配一个php-cgi出去处理,处理完则收回管理。

    66330
    领券