如何约束命令行应用程序可以在linux webserver上使用的资源

时间:2012-08-29 10:36:56

标签: php linux resources webserver

情况就是这样:

我有一个(php / mysql)Web应用程序,可以进行一些pdf处理和缩略图创建。这是通过在服务器上使用某些第三方命令行软件来完成的。这两种处理都消耗了大量资源,使服务器窒息。我想限制这些应用程序可以使用的资源量,以使服务器能够在没有太多延迟的情况下继续为用户提供服务,因为现在当处理一些繁重的pdf时,我的用户不会得到任何响应。

是否可以限制应用程序可以使用的RAM和CPU数量(所有进程合并)?还是有另一种方法来处理这种情况?这通常是怎么做的?

1 个答案:

答案 0 :(得分:3)

使用ulimit设置资源限制。 “硬”限制是操作系统强制执行的最大限制,一旦设置就无法增加。 “软”限制是建议的最大值,您的流程可以随意更改,但不能超过硬限制。

例如,要防止script.sh使用超过256MB的虚拟内存:

ulimit -H -v $((2*1024*1024))
./script.sh

将其构建到PHP脚本中,该脚本在命令行上执行该过程。