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

解决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.5K40

事故记录: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.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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.1K31

    区分 CGI FastCGI PHP-CGI PHP-FPM

    PHP-CGI 是 PHP 的 CGI 版本,它可以让 PHP 脚本在 Web 服务器上运行,但由于 CGI 的低效率,PHP-CGI 的性能也比较低。...作用举例: 如果使用 CGI 或 PHP-CGI 来运行 PHP 脚本,每次请求都需要启动一个新的进程,效率较低。而如果使用 FastCGI 或 PHP-FPM,则可以使用长连接的方式,提高效率。...而且当 worker 不够用时,master 可以根据配置预先启动几个 worker 等着;当然空闲 worker 太多时,也会停掉一些,这样就提高了性能,也节约了资源。...这就是 FastCGI 对进程的管理。 PHP-CGI PHP-CGI 只是个 CGI 程序,他自己本身只能解析请求,返回结果,不会进程管理。...PHP-CGI 的不足:PHP-CGI 变更 php.ini 配置后需重启 PHP-CGI 才能让新的 php-ini 生效,不可以平滑重启。直接杀死 PHP-CGI 进程,PHP 就不能运行了。

    19830

    当面试官问你: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的支持。

    72840

    「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的漏洞在

    66640

    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进程等着,当空闲进程太多又会关掉一些

    70820

    如何理解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的对进程的管理。

    96030

    全面了解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就不能运行了的问题。

    83300

    FastCgi与PHP-fpm之间的关系

    而且当worker不够用时,master可以根据配置预先启动几个 worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。...大家都知道,PHP的解释器是php-cgiphp-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.7K12

    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.4K20

    详解 Nginx 和 php-fpm 调用方式

    而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。...大家都知道,PHP的解释器是php-cgiphp-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.5K30

    fastcgi,cgi,php-fpm之间的关系及区别

    二、FastCGI 当环境服务器把东西转交给PHP时,PHP会解析php.ini文件,然后通过php的配置要求去处理这些请求,再以规定CGI规定的格式告诉环境服务器我处理完了,退出进程。...而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对请求进程的作用。...三、PHP-FPM 上面在CGI的介绍中提到PHP会去解析请求以及重新去加载php.ini文件,这个东西就是php-cgi解释器。...php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理。PHP-FPM的作用就是去调度管理这些进程,说白了fastcgi是一个协议,php-fpm实现了这个协议。...当我们修改php.ini之后,php-cgi进程是没办法平滑重启的。php-fpm对此的处理机制是新的worker用新的配置,已经存在的worker处理完手上的活就可以歇着了,通过这种机制来平滑过度。

    52030

    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.2K20
    领券