如何限制命令行应用程序可以在Linuxnetworking服务器上使用的资源

这是情况:

我有一个(PHP / MySQL)的Web应用程序,做一些PDF处理和缩略图创build。 这是通过在服务器上使用一些第三方命令行软件来完成的。 这两种处理消耗大量的资源,以至于窒息服务器。 我想限制这些应用程序可以使用的资源数量,以使服务器能够保持服务用户不会有太多的延迟,因为现在当处理一些重的pdf时,我的用户没有得到任何回应。

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

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

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

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

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