这是情况:
我有一个(PHP / MySQL)的Web应用程序,做一些PDF处理和缩略图创build。 这是通过在服务器上使用一些第三方命令行软件来完成的。 这两种处理消耗大量的资源,以至于窒息服务器。 我想限制这些应用程序可以使用的资源数量,以使服务器能够保持服务用户不会有太多的延迟,因为现在当处理一些重的pdf时,我的用户没有得到任何回应。
是否可以限制应用程序可以使用的RAM和CPU的数量(所有进程组合)? 还是有另一种方法来处理这种情况? 这通常如何完成?
使用ulimit
来设置资源限制。 “硬”限制是最大的,操作系统强制限制的资源,一旦设置就不能增加。 “软”限制是您的过程可以随意更改的建议最大值,但不能超过硬限制。
例如,要防止script.sh
使用超过256MB的虚拟内存:
ulimit -H -v $((2*1024*1024)) ./script.sh
将其构建到您的PHP脚本中,在命令行上执行该过程。