如何安全地杀死这些PHP进程?

我已经安装在Ubuntu和WordPress的php5。 它可以在安装后运行。 但几天后,我发现有很多的过程,并占据了很多的回忆。 我尝试使用

ps -aux | grep www-data 

并发现了约30个这样的过程。

 www-data 5066 0.0 0.0 131664 780 ? S 16:20 0:00 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf 

我尝试过了

 kill -9 pid 

并没有工作,更多的过程再次出现。 那么你能告诉我如何安全地杀死他们,我不想让我的vps的内存占用它。

并没有工作,更多的过程再次出现

真? 虽然我期望更多的进程出现,你杀了一个应该离开。

如果你想停止所有这些,然后closures守护进程,我不知道它是如何configuration在你的机器上,但在这里我会做….

 /etc/init.d/php-fpm stop 

但是htat不是解决“我发现有很多过程并且占据了很多回忆”这个问题的方法。 你应该开始做适当的stream量分析和分析代码。

试试这里,我认为它的同样的问题:)

如何停止www-data的Apache进程?

“作为www-data运行的Apache是​​Debian Lenny的默认设置,你可能会把一个”父“apache进程(以root身份运行)与apache”children“做HTTP请求处理(作为www-data运行)混淆。 '和'children'进程应该看起来像是用/ usr / sbin / apache2 -k start启动的(当ps aux | grep apache时),唯一的区别是进程所有者。

要控制init启动脚本,你可以使用sudo sysv-rc-conf(sudo aptitude install sysv-rc-conf,如果你没有的话 – 这对init脚本来说只是一个简单的诅咒Perl包装)。“-Chronos

所以每个进程都是处理http请求的subprocess,如果你真的要杀死它们,可以使用sudo kill PID或者/ usr / sbin / apache2 -k stop来终止进程。

汤姆

有100%没有错你所看到的。 PHP是一个由Apache运行的模块,由用户www-data 。 你看到的是正常的行为。 而我为提高性能所做的大部分调整都与Apacheconfiguration相关,而不是PHP设置。

如果你想更好地控制这种行为,有两个地方可以进行调整。

1.调整PHP内存限制:打开应该位于/etc/php5/apache2/php.ini php.ini文件,并编辑名为memory_limit的选项。 它应该设置为64M或32M。 但这基本上是任何PHP进程的内存最大限制,这个限制与每个Apache2进程(见下文)有关。 所以,如果你运行WordPress的,它想运行任何与32M内存的进程,没有问题。 如果需要更多脚本将会失败,并且位于/var/log/apache2/error.log Apache2错误日志将填充错误。

2.调整你的Apacheconfiguration以满足你的需求:由于PHP是一个在Apache中运行的模块,所以运行更多内存的Apache进程就会被吃掉。 如果你有一个标准的Apache2安装打开这个文件和环顾: /etc/apache2/apache2.conf 。 下面是我经常在标准安装中调整的设置。

  • 超时:这是客户端向服务器发出的请求和满足该请求的服务器之间的超时。 根据我的经验,300秒(5分钟)的设置太高。 我调整到120。
  • KeepAlive:我总是保持这个状态,因为它可以帮助Apache更好地使用内存和资源。 这基本上意味着如果客户端仍在请求内容,Apachesubprocess不会自行终止。 这样一个stream程可以stream动数据,然后在完成工作后安全地死亡。
  • MaxKeepAliveRequests:直接连接到KeepAlive 。 我根据服务器的需求来调整它。 对于开发环境,我保持这个低。 比方说3或4.对于生产环境,我倾向于认为KeepAlive只对大约1/3的连接有用。 所以我把它设置为大约24或32,但是它的内存是一个问题,我会保持这个低,因为你运行更多的客户端运行更多的KeepAlive进程和每个进程使用更多的RAM。
  • KeepAliveTimeout:这基本上是衡量一个人可以在网站上加载网页的速度。 考虑一下:为什么在客户端获取一页内容的时间内保持连接的活跃? 根据我的经验,2秒到5秒的设置是好的。 但是,当它改变一个页面5秒钟,这意味着什么是真正窒息的底层系统。 所以对我来说,这是一个重新评估代码和清理资源密集型编码的标志。

    接下来转到mpm_prefork_module区域。 这是我如何设置我的开发环境; 这是一个低stream量的网站。

 <IfModule mpm_prefork_module> StartServers 8 MinSpareServers 8 MaxSpareServers 8 ServerLimit 16 MaxClients 16 MaxRequestsPerChild 2000 </IfModule> 

基本上,这设置了基本Apache安装的所有限制和参数。 我相信每一个参数都应该是自我解释的,但这里是我的分解。

  • StartServers:在Apache下立即启动多less个子服务器。
  • MinSpareServers:要保留的最小数量的子级服务器。
  • MaxSpareServers:要保留的最大数量的子级服务器。
  • ServerLimit:多less个子服务器可以存在的最高限制。
  • MaxClients:在任何给定时刻可以存在的最大客户数量。
  • MaxRequestsPerChild:这个设置有助于在一定数量的请求之后终止subprocess。 这有助于防止内存泄漏,因为技术上subprocess可以永远运行直到下一次Apache2重启。 我喜欢有一个安全措施,这样即使开发人员部署了一些拙劣的代码,我也可以在晚上睡觉。

希望这可以帮助!