包含php5cgi占内存的词条

本文目录一览:

502 Bad Gateway 怎么解决

502 Bad Gateway是一种报错提示,这一错误并不意味着上游服务器已关闭(无响应网关/代理),而是上游服务器和网关/代理不同意的协议交换数据。第一种原因:目前lnmp一键安装包比较多的问题就是502 Bad Gateway,大部分情况下原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。解决办法:可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的。第二种原因:在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway第三种原因:在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。第四种原因:php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300。第五种原因:磁盘空间不足,如mysql日志占用大量空间。第六种原因:查看php-cgi进程是否在运行。另外的解决办法:Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关。php-fpm.conf有两个至关重要的参数,一个是max_children,另一个是request_terminate_timeout,但是这个值不是通用的,而是需要自己计算的。在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。计算的方式如下:如果服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话可以直接将 request_terminate_timeout设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。如果做不到这一点,也就 是说PHP-CGI可能出现某个BUG,或者宽带不够充足或者其他的原因导致PHP-CGI假死那么就建议给 request_terminate_timeout赋一个值,这个值可以根据服务器的性能进行设定。一般来说性能越好可以设置越高,20分钟-30分 钟都可以。而max_children这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。 设置max_children也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右。按照官方的答案,排查了相关的可能,并结合了网友的答案,得出了下面的解决办法:1、查看php fastcgi的进程数(max_children值)代码:netstat -anpo grep “php-cgi” wc -l5(假如显示5)2、查看当前进程,代码:top观察fastcgi进程数,假如使用的进程数等于或高于5个,说明需要增加(根据机器实际状况而定)3、调整/usr/local/php/etc/php-fpm.conf 的相关设置value name=”max_children”10/valuevalue name=”request_terminate_timeout”60s/valuemax_children最多10个进程,按照每个进程20MB内存,最多200MB。request_terminate_timeout执行的时间为60秒,也就是1分钟。

一个php-cgi占用系统多大内存

在网上翻阅资料的时候会看到有人说一个php-cgi进程大约占用系统内存20M,但是php-cgi占用内存其实是与你的php.ini配置加载多少个.so(.dll)模块相关的,我们在linux系统下查看,可以用pman的命令:

pmap $(pgrep php-cgi | head -1)

[root@Smile ~]# pmap $(pgrep php-cgi | head -1)

2830: /home/pubsrv/php/bin/php-cgi –fpm –fpm-config /home/pubsrv/php/etc/php-fpm.conf

0000000000400000 6852K r-x– /home/pubsrv/php/bin/php-cgi

0000000000cb1000 268K rw— /home/pubsrv/php/bin/php-cgi

0000000000cf4000 60K rw— [ anon ]

00000000016fd000 2216K rw— [ anon ]

0000003c24a00000 128K r-x– /lib64/ld-2.12.so (deleted)

0000003c24c1f000 4K r—- /lib64/ld-2.12.so (deleted)

0000003c24c20000 4K rw— /lib64/ld-2.12.so (deleted)

0000003c24c21000 4K rw— [ anon ]

0000003c24e00000 8K r-x– /lib64/libdl-2.12.so (deleted)

0000003c24e02000 2048K —– /lib64/libdl-2.12.so (deleted)

0000003c25002000 4K r—- /lib64/libdl-2.12.so (deleted)

0000003c25003000 4K rw— /lib64/libdl-2.12.so (deleted)

0000003c25200000 1576K r-x– /lib64/libc-2.12.so (deleted)

0000003c2538a000 2044K —– /lib64/libc-2.12.so (deleted)

0000003c25589000 16K r—- /lib64/libc-2.12.so (deleted)

0000003c2558d000 4K rw— /lib64/libc-2.12.so (deleted)

0000003c2558e000 20K rw— [ anon ]

0000003c25600000 92K r-x– /lib64/libpthread-2.12.so (deleted)

0000003c25617000 2048K —– /lib64/libpthread-2.12.so (deleted)

0000003c25817000 4K r—- /lib64/libpthread-2.12.so (deleted)

0000003c25818000 4K rw— /lib64/libpthread-2.12.so (deleted)

0000003c25819000 16K rw— [ anon ]

0000003c25a00000 28K r-x– /lib64/librt-2.12.so (deleted)

0000003c25a07000 2044K —– /lib64/librt-2.12.so (deleted)

0000003c25c06000 4K r—- /lib64/librt-2.12.so (deleted)

0000003c25c07000 4K rw— /lib64/librt-2.12.so (deleted)

0000003c25e00000 524K r-x– /lib64/libm-2.12.so (deleted)

0000003c25e83000 2044K —– /lib64/libm-2.12.so (deleted)

0000003c26082000 4K r—- /lib64/libm-2.12.so (deleted)

0000003c26083000 4K rw— /lib64/libm-2.12.so (deleted)

0000003c26200000 84K r-x– /lib64/libz.so.1.2.3 (deleted)

0000003c26215000 2044K —– /lib64/libz.so.1.2.3 (deleted)

0000003c26414000 4K r—- /lib64/libz.so.1.2.3 (deleted)

0000003c26415000 4K rw— /lib64/libz.so.1.2.3 (deleted)

0000003c26600000 116K r-x– /lib64/libselinux.so.1.#prelink#.YPfIAE (deleted)

0000003c2661d000 2044K —– /lib64/libselinux.so.1.#prelink#.YPfIAE (deleted)

0000003c2681c000 4K r—- /lib64/libselinux.so.1.#prelink#.YPfIAE (deleted)

0000003c2681d000 4K rw— /lib64/libselinux.so.1.#prelink#.YPfIAE (deleted)

0000003c2681e000 4K rw— [ anon ]

0000003c26a00000 928K r-x– /usr/lib64/libstdc++.so.6.0.13 (deleted)

0000003c26ae8000 2048K —– /usr/lib64/libstdc++.so.6.0.13 (deleted)

0000003c26ce8000 28K r—- /usr/lib64/libstdc++.so.6.0.13 (deleted)

0000003c26cef000 8K rw— /usr/lib64/libstdc++.so.6.0.13 (deleted)

0000003c26cf1000 84K rw— [ anon ]

0000003c26e00000 88K r-x– /lib64/libgcc_s-4.4.7-20120601.so.1;529c1fe4 (deleted)

0000003c26e16000 2044K —– /lib64/libgcc_s-4.4.7-20120601.so.1;529c1fe4 (deleted)

0000003c27015000 4K rw— /lib64/libgcc_s-4.4.7-20120601.so.1;529c1fe4 (deleted)

0000003c27200000 88K r-x– /lib64/libresolv-2.12.so (deleted)

0000003c27216000 2048K —– /lib64/libresolv-2.12.so (deleted)

0000003c27416000 4K r—- /lib64/libresolv-2.12.so (deleted)

0000003c27417000 4K rw— /lib64/libresolv-2.12.so (deleted)

0000003c27418000 8K rw— [ anon ]

0000003c27a00000 12K r-x– /lib64/libplds4.so (deleted)

0000003c27a03000 2044K —– /lib64/libplds4.so (deleted)

0000003c27c02000 4K r—- /lib64/libplds4.so (deleted)

0000003c27c03000 4K rw— /lib64/libplds4.so (deleted)

0000003c27e00000 16K r-x– /lib64/libplc4.so (deleted)

0000003c27e04000 2044K —– /lib64/libplc4.so (deleted)

0000003c28003000 4K r—- /lib64/libplc4.so (deleted)

0000003c28004000 4K rw— /lib64/libplc4.so (deleted)

0000003c28200000 228K r-x– /lib64/libnspr4.so (deleted)

0000003c28239000 2048K —– /lib64/libnspr4.so (deleted)

0000003c28439000 4K r—- /lib64/libnspr4.so (deleted)

0000003c2843a000 8K rw— /lib64/libnspr4.so (deleted)

0000003c2843c000 8K rw— [ anon ]

0000003c28600000 148K r-x– /usr/lib64/libnssutil3.so (deleted)

0000003c28625000 2044K —– /usr/lib64/libnssutil3.so (deleted)

0000003c28824000 24K r—- /usr/lib64/libnssutil3.so (deleted)

0000003c2882a000 4K rw— /usr/lib64/libnssutil3.so (deleted)

0000003c28a00000 408K r-x– /lib64/libfreebl3.so (deleted)

0000003c28a66000 2048K —– /lib64/libfreebl3.so (deleted)

0000003c28c66000 4K r—- /lib64/libfreebl3.so (deleted)

0000003c28c67000 4K rw— /lib64/libfreebl3.so (deleted)

0000003c28c68000 16K rw— [ anon ]

0000003c28e00000 28K r-x– /lib64/libcrypt-2.12.so (deleted)

0000003c28e07000 2048K —– /lib64/libcrypt-2.12.so (deleted)

0000003c29007000 4K r—- /lib64/libcrypt-2.12.so (deleted)

0000003c29008000 4K rw— /lib64/libcrypt-2.12.so (deleted)

0000003c29009000 184K rw— [ anon ]

0000003c29200000 1236K r-x– /usr/lib64/libnss3.so (deleted)

0000003c29335000 2044K —– /usr/lib64/libnss3.so (deleted)

0000003c29534000 20K r—- /usr/lib64/libnss3.so (deleted)

0000003c29539000 8K rw— /usr/lib64/libnss3.so (deleted)

0000003c2953b000 8K rw— [ anon ]

0000003c29600000 160K r-x– /usr/lib64/libsmime3.so (deleted)

0000003c29628000 2048K —– /usr/lib64/libsmime3.so (deleted)

0000003c29828000 12K r—- /usr/lib64/libsmime3.so (deleted)

0000003c2982b000 4K rw— /usr/lib64/libsmime3.so (deleted)

0000003c29a00000 204K r-x– /usr/lib64/libssl3.so (deleted)

0000003c29a33000 2048K —– /usr/lib64/libssl3.so (deleted)

0000003c29c33000 8K r—- /usr/lib64/libssl3.so (deleted)

0000003c29c35000 4K rw— /usr/lib64/libssl3.so (deleted)

0000003c29c36000 4K rw— [ anon ]

0000003c29e00000 12K r-x– /lib64/libcom_err.so.2.1 (deleted)

0000003c29e03000 2044K —– /lib64/libcom_err.so.2.1 (deleted)

0000003c2a002000 4K r—- /lib64/libcom_err.so.2.1 (deleted)

0000003c2a003000 4K rw— /lib64/libcom_err.so.2.1 (deleted)

0000003c2a200000 100K r-x– /usr/lib64/libsasl2.so.2.0.23.#prelink#.BXW3hH (deleted)

0000003c2a219000 2044K —– /usr/lib64/libsasl2.so.2.0.23.#prelink#.BXW3hH (deleted)

0000003c2a418000 4K r—- /usr/lib64/libsasl2.so.2.0.23.#prelink#.BXW3hH (deleted)

0000003c2a419000 4K rw— /usr/lib64/libsasl2.so.2.0.23.#prelink#.BXW3hH (deleted)

0000003c2aa00000 1488K r-x– /usr/lib64/libcrypto.so.1.0.0 (deleted)

0000003c2ab74000 2044K —– /usr/lib64/libcrypto.so.1.0.0 (deleted)

0000003c2ad73000 100K r—- /usr/lib64/libcrypto.so.1.0.0 (deleted)

0000003c2ad8c000 40K rw— /usr/lib64/libcrypto.so.1.0.0 (deleted)

0000003c2ad96000 16K rw— [ anon ]

0000003c2ae00000 56K r-x– /lib64/liblber-2.4.so.2.5.6.#prelink#.IEslwN (deleted)

0000003c2ae0e000 2044K —– /lib64/liblber-2.4.so.2.5.6.#prelink#.IEslwN (deleted)

0000003c2b00d000 4K r—- /lib64/liblber-2.4.so.2.5.6.#prelink#.IEslwN (deleted)

0000003c2b00e000 4K rw— /lib64/liblber-2.4.so.2.5.6.#prelink#.IEslwN (deleted)

0000003c2b200000 608K r-x– /usr/lib64/libfreetype.so.6.3.22.#prelink#.GI1Kfx (deleted)

0000003c2b298000 2044K —– /usr/lib64/libfreetype.so.6.3.22.#prelink#.GI1Kfx (deleted)

0000003c2b497000 24K rw— /usr/lib64/libfreetype.so.6.3.22.#prelink#.GI1Kfx (deleted)

0000003c2b600000 260K r-x– /lib64/libgssapi_krb5.so.2.2.#prelink#.gjYRNu (deleted)

0000003c2b641000 2048K —– /lib64/libgssapi_krb5.so.2.2.#prelink#.gjYRNu (deleted)

0000003c2b841000 4K r—- /lib64/libgssapi_krb5.so.2.2.#prelink#.gjYRNu (deleted)

0000003c2b842000 8K rw— /lib64/libgssapi_krb5.so.2.2.#prelink#.gjYRNu (deleted)

0000003c2ba00000 148K r-x– /usr/lib64/libpng12.so.0.49.0.#prelink#.cL7qH2 (deleted)

0000003c2ba25000 2048K —– /usr/lib64/libpng12.so.0.49.0.#prelink#.cL7qH2 (deleted)

0000003c2bc25000 4K rw— /usr/lib64/libpng12.so.0.49.0.#prelink#.cL7qH2 (deleted)

0000003c2be00000 292K r-x– /lib64/libldap-2.4.so.2.5.6.#prelink#.QXZutL (deleted)

0000003c2be49000 2048K —– /lib64/libldap-2.4.so.2.5.6.#prelink#.QXZutL (deleted)

total 286016K

[root@Smile ~]#

可以看到我的一个php-cgi占用了大约28M

php-cgi.exe 占用cpu过高,求高手解决。

用Module吧~~~在php目录中install.txt里有。

使用Apache设置。

LoadModule php4_module “c:/php/php4apache2.dll”

# Don’t forget to copy the php4apache2.dll file from the sapi directory!

AddType application/x-httpd-php .php

# For PHP 5 do something like this:

LoadModule php5_module “c:/php/php5apache2.dll”

AddType application/x-httpd-php .php

# configure the path to php.ini

PHPIniDir “C:/php”

php5-cgi和php5-fpm 这两个东西是什么意思啊?有什么区别?怎么使用

CGI

CGI全称是逗公共网关接口地(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行逗交谈地的一种工具,其程序须运行在网络服务器上。

CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。

FastCGI

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

FastCGI特点

FastCGI具有语言无关性.

FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器。 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。

FastCGI技术目前支持语言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相关模块在Apache, ISS, Lighttpd等流行的服务器上也是可用的。

FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。

FastCGI的工作原理

Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

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内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启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就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)

PHP-FPM

PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 下载得到。

PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

求php-cgi.exe使用率过高导致CPU100%的解决办法

不要使用普通的CGI模式安装,每个PHP进程默认占128MB内存,几G内存也最多百来人访问就击垮了。 CGI模式是早期内部小网站的模式,现在一般用于开发时方便调试。

部署PHP应该使用FastCGI方式或者ISAPI方式安装,就不会产生多进程和资源占用过多。

cgi/fastcgi占用率高

在web服务器配置中优化fastcgi配置文件参数。

php-cgi进程并没有内存泄漏,php-cgi会在每个请求结束的时候回收脚本使用的全部内存,但是并不会释放给操作系统,而是继续持有以应对下一次PHP请求。这样做大概是为了减少内存碎片化或者解决从系统申请内存之后又释放回操作系统所需要的时间不可控问题。可是如果偶然一次PHP请求使用了诸如ftp或者zlib这样的大内存操作,那么将导致一大块系统内存被php-cgi持续占有,不能被利用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/245156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:06
下一篇 2024-12-12 13:06

相关推荐

  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python变量在内存中的存储

    该文章将从多个方面对Python变量在内存中的存储进行详细阐述,包括变量的声明和赋值、变量的引用和指向、内存地址的变化、内存管理机制等。 一、声明和赋值 在Python中,变量声明…

    编程 2025-04-29
  • Python计算内存占用

    Python是一种高级的、解释性的、面向对象的、动态的程序语言,因其易于学习、易于阅读、可移植性好等优点,越来越受到开发者的青睐。当我们编写Python代码时,可能经常需要计算程序…

    编程 2025-04-28
  • 使用Go-Redis获取Redis集群内存使用率

    本文旨在介绍如何使用Go-Redis获取Redis集群的内存使用率。 一、Go-Redis简介 Go-Redis是一个用于连接Redis服务器的Golang客户端。它支持Redis…

    编程 2025-04-28
  • Python内置函数——查看对象内存

    本文将介绍Python内置函数中,在开发中查看对象内存的相关函数。 一、id()函数 id()函数是Python内置函数,用于返回对象的唯一标识符,也就是对象在内存中的地址。 nu…

    编程 2025-04-27
  • Python进程池共享内存用法介绍

    本文将从多个方面详细阐述Python进程池共享内存的相关知识,包括如何使用进程池、进程池的实现原理、进程池中的共享内存管理等。本文内容将涵盖: 一、进程池的使用 进程池是一种有效的…

    编程 2025-04-27
  • 深入解析Redis内存淘汰策略

    Redis是一个高性能键值数据库,由于其快速、稳定和易于使用,它已经成为很多应用程序中不可或缺的一部分。在使用Redis时,我们需要考虑内存管理问题。Redis内存淘汰策略是如何工…

    编程 2025-04-25
  • 解决SQL Server内存占用高问题的方法

    一、关闭不必要的服务 在SQL Server安装时,默认开启了许多服务,包括SQL Server Browser,SQL Server Agent等。关闭不必要的服务可以释放内存资…

    编程 2025-04-25
  • c++内存模型的详细阐述

    一、c 内存模型有哪些 c语言的内存模型主要包括4个方面:数据类型在内存中的分布、存储类型、指针、内存分配和释放。 数据类型在内存中的分布,首先是指针类型,在32位系统中占4个字节…

    编程 2025-04-23
  • 深入gperftools:性能分析和内存分析工具

    一、gperftools安装 gperftools是一个用于分析CPU使用率、内存分配和性能分析的工具。在Ubuntu系统上安装gperftools,我们需要在终端中键入: $ s…

    编程 2025-04-23

发表回复

登录后才能评论