单个可运行 jar 文件的 CPU 限制

Web*_*ter 4 java

我有一个 .sh 脚本,里面有很多 jar 文件。每个 jar 文件都有唯一的启动参数。我必须限制所有 jar 文件每个使用的 CPU 不超过 %5。

nohup java -a dsasda -p adss
nohup java -a dsasad -p adds
nohup java -a dsdasa -p adsa
nohup java -a dsdsa -p adds
nohup java -a ddassa -p adas
Run Code Online (Sandbox Code Playgroud)

我一直在阅读 cpulimit 工具,如何使用它来定位单个 jars?

小智 7

使用 cpulimit

我会用你建议的工具来领导;cpulimit绝对可以为所欲为。 nohup cpulimit --background --limit=5 -- java -a dsasda -p adss

请记住,5% 是单个 CPU 内核的5% ,而不是机器总计算能力的5% 。如果您想使用 5% 的多核机器,请扩大规模。

您可能还想将--quiet参数传递给 cpulimit。

如果您的愿望不是将进程具体限制为 5%,而只是为了防止 java 使您的机器陷入困境,请考虑改为使用nice.

使用 nice

nice将降低您的 Java 进程的优先级,以便它们不会占用所有 CPU 时间并减慢速度。与cpulimit,不同,nice如果没有其他人想使用它,它将让 java 进程使用超过 5% 的 CPU。

nohup nice java -a dsasda -p adss

nice接受一个可选参数,--adjustment=N其中 N 是一个整数,范围从 19(非常低的优先级)到 0(正常)甚至到 -20(非常高的优先级,但仅当您是 root 用户时才可用)。它会默认为 10,这可能没问题。