php-cgi.exe,phpcgiexe大量占用内存
内容概要:
- 1、freebsd服务器进程中出现很多php-cgi.exe,top显示进程数接近3000了...
- 2、服务器php-cgi.exe进程过多,导致CPU占用100%
- 3、php-cgi.exe是什么
- 4、php-cgi.exe进程最少开几个
freebsd服务器进程中出现很多php-cgi.exe,top显示进程数接近3000了...
1、php-cgi.exe 是windows中的,不是FreeBSD的。如果是安装的fast-cgi,它的进程名是 php-fpm 。可以在文件 /usr/local/etc/php-fpm.conf 中更改如(按实际需求):pm = dynamic #定义为动态进程,pm.max_children = 96 #最大子进程,主要是这个,pm.max_spare_servers = 8 #最大空闲进程数.。要PHP3以上版本。
2、PHP-FPM只支持Unix-like系统(Linux/FreeBSD/MacOS),不支持Windows.Windows上可以用PHP-CGI搭配CGI进程管理器来使用:比如Apache mod_fcgid 可以用来替代 mod_cgi 和 mod_cgid,具有管理和维持PHP-CGI进程数目的功能.ApacheLounge提供有Windows上的mod_fcgid二进制包。
3、nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。优化php-fpm,优化代码,加大内存才是解决502的根源。
4、/Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N = 10) 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。
5、部分情况下nginx都优于APACHE,比如说静态文件处理、PHP-CGI的支持、反向代理功能、前端Cache、维持连接等等。在 Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数飙升,从而拒绝服务的现象。
6、器端API比较,事实上Apache服务器与此可以比较的功能为modperl ,FastCGI,与ASP类似的功能为PHP等等,只不过由于Apache的开放模式, 这些功能是由独立的开发组,作为独立的模块来实现的。但是在评测中,测试人员没有加入相应的模块评测其性能。
服务器php-cgi.exe进程过多,导致CPU占用100%
1、你的现象一般有两种可能,一是PHP脚本问题,例如你在PHP脚本后面写一个按回车结束,然后从标准输入读数据,可能会造成阻塞,使得进程无法结束。进行测试的方法的是写一个最简单的PHP脚本(例如只有phpinfo();一行),然后不断用浏览器打开这个页面,如果CGI进程也在增加,那么说明是下面一种情况。
2、限制 PHP-CGI 进程数量通过配置 PHP-FPM(FastCGI Process Manager)的进程池参数,控制最大子进程数(pm.max_children)、启动进程数(pm.start_servers)及空闲进程数(pm.min_spare_servers/pm.max_spare_servers)。
3、重启PHP-CGI服务(如kill -USR2重启或通过服务管理工具)。 排查程序中的死循环或阻塞操作 死循环或无限执行的代码会导致CPU持续占用。诊断方法:使用top命令观察高负载进程的PID,结合ps aux | grep php-cgi定位异常进程。
php-cgi.exe是什么
1、php-cgi.exe 是 PHP(Hypertext Preprocessor)的一个组件,它是 PHP 的 CGI(Common Gateway Interface)版本的可执行文件。
2、基础需求PHP作为解释型脚本语言,在Web应用中通常通过HTTP服务器(如Apache、Nginx)执行。每个请求需由服务器传递给php-cgi.exe进程处理并返回结果。即使只有一个请求到达,也至少需要1个进程来完成解析和执行任务。这是php-cgi.exe进程存在的最低要求。
3、php-cgi.exe 是windows中的,不是FreeBSD的。如果是安装的fast-cgi,它的进程名是 php-fpm 。
4、PHP-CLI是PHP Command Line Interface的简称,如同它名字的意思,就是PHP在命令行运行的接口,区别于在Web服务器上运行的PHP环境(PHP-CGI,ISAPI等)。 也就是说,PHP不单可以写前台网页,它还可以用来写后台的程序。
5、确保“php-cgi.exe”在“专用”和“公用”网络下都被选中,以允许外部访问。获取公网IP:在浏览器中访问whatismyipaddress.com,这个网站会显示你的公网IP地址。告知访问者信息:将你的公网IP地址、配置的服务器端口以及网站的子目录(如果有的话)提供给想要访问你网站的人。
php-cgi.exe进程最少开几个
php-cgi.exe进程最少需要开启1个。以下是详细说明:基础需求PHP作为解释型脚本语言,在Web应用中通常通过HTTP服务器(如Apache、Nginx)执行。每个请求需由服务器传递给php-cgi.exe进程处理并返回结果。即使只有一个请求到达,也至少需要1个进程来完成解析和执行任务。这是php-cgi.exe进程存在的最低要求。
解决PHP CGI.exe进程过多的方法如下: 检查系统资源占用 系统盘空间:检查系统临时文件是否过多,尤其是MySQL数据库的临时文件(默认存储路径为C:/Windows/Temp)。若存在大量小文件(如数万至百万级),需及时清理。
限制 PHP-CGI 进程数量通过配置 PHP-FPM(FastCGI Process Manager)的进程池参数,控制最大子进程数(pm.max_children)、启动进程数(pm.start_servers)及空闲进程数(pm.min_spare_servers/pm.max_spare_servers)。
例如,当Nginx服务器(搭配PHP 14的FastCGI版本)在处理3万并发连接时,10个Nginx进程占用150兆内存(15兆*10),而64个PHP-CGI进程则消耗了1280兆内存(20兆*64)。考虑到内存资源的限制,如果服务器内存较小,可以通过减少PHP-CGI进程的数量来节省内存。
maxInstances:控制最大PHP-CGI进程数。建议根据内存容量调整:512MB内存设为50,1GB设为80,2GB设为140,4GB可设为300。InstanceMaxRequests:单个进程处理的最大请求数。降低该值(如512MB内存设为200,2GB设为500)可缩短进程生命周期,减少内存滞留。
