我有一个运行一组 php 脚本的 bash 脚本。它运行时需要一个小时,并且 CPU 占用率达到 95-99%。这导致我们的 lamp 堆栈(主要是 apache 进程)出现问题,并且同一台服务器上的网站开始出现超时或 500 错误。
我怎样才能:
- 以低优先级运行 bash 脚本和所有相关任务(也调用 PostgreSQL db 的 php 脚本),以便始终优先执行 Web 服务器的 apache、php 和 db 任务,或者
- 将脚本和相关任务的 CPU 使用率限制为例如 25% CPU
我不确定哪一个是更好的解决方案。
答案1
除此之外nice
,还可以考虑限制 CPU 时间,使用ulimit -t
(假设您在 *nix 平台上)
答案2
通过 运行您的命令nice
。
好的以改变的调度优先级运行实用程序。如果给出了增量,则使用该增量;否则假定增量为 10。超级用户可以通过使用负增量来运行优先级高于正常的实用程序。优先级可以在 -20(最高)到 20(最低)的范围内调整。
Available options: -n increment A positive or negative decimal integer used to modify the system scheduling priority of utility.
答案3
正如其他人所建议的,nice
这就是你想要的。限制 CPU 的 25% 是愚蠢的。这将不必要地延长系统性能降低的时间。
假设你有四辆车,需要办几件事。用一辆车办事和用所有闲置的车办事哪个更合理?前者可以留下四辆车去做重要的事情。后者只留下三辆车。而且在大多数现实情况下,前者也会更快地完成低优先级的工作。