首页
学习
活动
专区
圈层
工具
发布

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

这就有点不对劲,这台服务器的内核进程也就80个左右,加上memcached, nginx, mysqld,也不会超出90个,除了这些,剩下的只有php-fpm管理的php-cgi了。...指令top还列出了占用资源最多的进程,运行时间最久(Time+)的mysqld(约2小时)占用资源并不是最多。 4--再看php-cgi,单个php-cgi占用的内存也不算多。...所以,可以大胆地猜想:服务器内存资源比较紧张,并没有被某个进程占用大量内存,有可能被某些挂起的进程占着内存没有释放。通过free进一步监控内存使用情况,验证我们的想法。...从上面报告结果中可以一眼看到php-cgi这个进程。虽然单个php-cgi占用内存并不算太大,但是503个php-cgi进程,就有点恐怖了。几乎占尽了全部内存(503*0.3%)。...php-cgi由php-fpm管理,因此可以断定,是由于php-fpm配置文件php.ini中的max_children参数配置不当,才导致打开过多的php-cgi进程。

2.5K50

php多进程单线程之php-cgi、php-fpm

可见多个php-cgi)并等待来自Web Server的连接。...2.3 FastCGI的不足 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。...我是这么理解的:第一:CGI解释器(php-cgi)保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等,也就是在fast-cgi层面是管理着多个CGI...但多线程和并发没有直接关系,多线程只是代码被运行时在同一时间同时执行多个线程任务,来提高服务器CPU的利用率,提高代码效率。

2.8K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全面了解CGI、FastCGI、PHP-FPM

    (CGI程序和FastCGI程序,可以理解成遵循CGI协议和FastCGI协议编写的程序) FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程...(1)Web Server启动时载入FastCGI进程管理器(Apache Module或IIS ISAPI等) (2)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可建多个php-cgi...(2)由于FastCGI是多进程,所以比CGI多线程消耗更多的服务器内存,php-cgi解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理,所以就出现了一些能够调度php-cgi进程的程序,php-fpm就是这样的一个东西。...它克服了php-cgi变更php.ini配置后,需重启php-cgi才能让新的php-ini生效,不可以平滑重启,直接杀死php-cgi进程,php就不能运行了的问题。

    3.2K12

    全面了解CGI、FastCGI、PHP-FPM

    (CGI程序和FastCGI程序,可以理解成遵循CGI协议和FastCGI协议编写的程序) FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程...,启动多个CGI解释器进程(可建多个php-cgi),并等待来自Web Server的连接。...(2)由于FastCGI是多进程,所以比CGI多线程消耗更多的服务器内存,php-cgi解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。 ...php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理,所以就出现了一些能够调度php-cgi进程的程序,php-fpm就是这样的一个东西。...它克服了php-cgi变更php.ini配置后,需重启php-cgi才能让新的php-ini生效,不可以平滑重启,直接杀死php-cgi进程,php就不能运行了的问题。

    1.1K00

    概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM

    FastCGI的工作原理 Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个...FastCGI的不足 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...如果服务器内存较小,完全可以只开启25 个php-cgi进程,这样php-cgi消耗的总内存数才500M。...上面的数据摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版) PHP-CGI PHP-CGI是PHP自带的FastCGI管理器。...PHP-CGI的不足: php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。

    2.4K80

    PHP强化之22 - CGI、FastCGI与PHP-FPM

    PHP-CGI的不足: 1)php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 2)直接杀死php-cgi进程,php就不能运行了。...FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。...文字解说: 1)Web Server启动时载入FastCGI进程管理器(Apache Module或IIS ISAPI等) 2)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可建多个...2)由于FastCGI是多进程,所以比CGI多线程消耗更多的服务器内存,php-cgi解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...因为PHP-CGI只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理。所以就出现了一些能够调度 php-cgi 进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。

    92410

    nginx服务器究竟是怎么执行php项目

    FastCGI的工作原理 Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个...FastCGI的不足 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M...如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。...PHP-CGI的不足: php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。

    1.5K10

    linux 批量杀死多个进程 kill

    下面说说用管道符联接起来的 几个命令: “ ps - ef”是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep LOCAL=NO”的输入。...“grep LOCAL=NO”的输出结果是,所有含有关键字“LOCAL=NO”的进程,这是Oracle数据库中远程连接进程的共同特点。...“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。 “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。...“kill -9”会强行杀掉指定进程,这样就成功清除了oracle的所有远程连接进程。其它类似的任务,只需要修改“grep LOCAL=NO”中的关键字部分就可以了。...killall 进程名 如杀死java相关进程:killall java

    6.4K20

    CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI 的区别

    FastCGI的工作原理 Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI的不足 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...什么是PHP-CGI PHP-CGI是PHP自带的FastCGI管理器 PHP-CGI的不足 php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启 直接杀死...php-cgi进程,php就不能运行了。

    1.4K10

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

    定义 cgi 通用网关接口,外部程序与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程 每一次请求都会生成一个cgi进程,cgi程序执行完,进程退出 独立于服务器、独立编程语言...FastCgi FastCgi 像是一个常驻型的Cgi,它可以一直执行这,只要激活后,不需要每次去fork一次,还支持分布式运算,即FastCgi程序可以在网站服务器以外的主机上执行并且接受来自其他网站服务器的请求...可以同时处理多个请求 长期占用内存 php-cgi php官方自带的FastCGI 进程管理器 php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。...都打不开链接了 我的理解是,web服务器启动,自动启动fastCgi模块 并且长期驻留在内存里, 用户访问 fastCgi程序,开启的fastCgi模块 ,直接处理请求,并返回结果. php-cgi 启动...技术 php是动态脚本语言 , php5.3以前 用php-cgi 来实现 fastCgi web请求,php 5.4开始,php-fpm 取代了php-cgi ,主要原因是 不能平滑重启php ,内存不能进行动态分配

    1.6K10

    PHP架构与生命周期

    很少有人用,它是收费的WEB服务器 phpdbg 用于PHP代码调试,跟gdb功能类似 PHP-CGI 由PHP提供实现了CGI协议的程序,每个请求都会开启一个php-cgi进程来处理,如果更改了配置需要重启才能生效...而是允许一个进程对多个连接进行处理,处理完成之后会等待下一个请求。...PHP-FPM是常驻内存的,会开启多个PHP-CGI程序,而一个PHP-CGI基本消耗7~25M内存,因此连接过多就会导致内存消耗过大 PHP中CGI的实现 其本质是以socket编程实现一个TCP或UDP...fork出多个子进程,每个子进程的内存空间独立,每个子进程都会经过开始和结束环节 每个进程的开始阶段只在进程fork出来以后进行,在整个进程的生命周期内可能会处理多个请求 只有在apache关闭或进程被结束之后才会进行关闭阶段...请求开始-请求结束 环节 在这种模式下,只有一个服务器进程在运行,但同时会运行多个线程。

    69130

    PHP-FPM发展史

    CGI的工作原理 Web服务器一般只用来处理静态文件请求,当碰到动态脚本请求时,Web服务器主进程就会创建一个新的进程来启动CGI程序,也就是将动态脚本交给CGI程序来处理。...PHP-CGI PHP-CGI就是CGI协议的php版本实现。...除了协议本身的问题还有一些其他问题 比如 PHP-CGI变成php.ini配置后,需要重启php-cgi才能让新的配置生效,不可以平滑重启。 直接杀死PHP-CGI进程,php就不能运行了。...FastCGI进程管理器自身初始化,并启动多个CGI解释器进程并等待Web服务器的连接。...PHP-FPM的工作原理 当前PHP-FPm启动时,首先会创建一个master进程,负责请求的分发,初始化环境,加载配置文件等一些初始化操作,然后根据配置的设定启动多个woker进程 当请求过来时,master

    98020

    nginx服务器究竟是怎么执行php项目

    FastCGI的工作原理 Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个...FastCGI的不足 因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。...Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M...如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。...PHP-CGI的不足: php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。

    1.1K10
    领券