Linux服务器上,CPU使用率被认为是高的阈值是多少?

3
我正在运行一些PHP任务,从Web服务中获取数十万条数据并将它们插入到数据库中。这些任务占用了服务器的CPU使用率。
我的问题是,多高的使用率被认为是高?
当我在Linux服务器上执行“top”命令时,似乎高达77%..如果同时运行更多的任务,它会增加到超过100%。对我来说似乎很高(超过100%是否意味着它正在第二个CPU上运行?)。
28908 mysql     15   0  152m  43m 5556 S 77.6  4.3   2099:25 mysqld             
 7227 apache    15   0  104m  79m 5964 S  2.3  7.8   4:54.81 httpd 
此服务器还托管了网页/项目。每小时的任务似乎也影响了服务器以及其他Web项目的加载时间。
如果使用率太高,有没有使CPU效率更高的方法?
有人可以给予指导吗?

是的,它是100%每个CPU。通常问题是恒定的CPU负载(但只有在它成为问题时才是问题,“松弛”保持良好,以便在需要时有额外的处理能力可用,同时空闲更多的CPU可以运行得更凉/消耗更少的电)。如果PHP作业在功能要求内完成并且不违反任何使用指南或使其他进程饥饿,我会说“足够好”。要使该过程更有效率,需要进行详细的审查/分析和分析。 - user166390
嗯,每个核心。不确定超线程或等效技术如何适用。 - user166390
5个回答

2
更好的指标是负载平均值,简单来说,它是由于资源不足而等待任务的数量。
您可以在uptime命令中访问它,例如:13:05:31 up 6 days, 22:54, 5 users, load average: 0.01, 0.04, 0.06。末尾的3个数字是最近1分钟、最近5分钟和最近15分钟的负载平均值。如果达到1.00(无论核心数如何),那么就是有东西在等待

我的负载平均值是..负载平均值: 0.20,0.23,0.18。 - flyclassic
看起来您在过去的15分钟内没有遇到资源匮乏的情况(无论是处理器、磁盘还是网络)。您的计算机没有难以完成工作的困难。 - shellholic

0

使用nice命令并不能帮助太多,因为占用CPU的是mysql, 将nice命令应用于php客户端如下:

nice -10 php /home/me/myjob.php

不会有任何显着的差异。

最好将工作分成较小的部分,从 cron 调用您的 php 脚本并进行构建。

<?
ini_set("max_execution_time", "600")
//
//1. get the file from remote server, in chunks to avoid net saturation
$fp = fopen('http://example.org/list.txt');
$fp2 = fopen('local.txt','w');
while(!feof($fp)) {
  fwrite($fp2,fread($fp,10000));
  sleep(5);
}
fclose($fp/fp2);

while(!eof(file) {
  //read 1000 lines
  //do insert..
  sleep(10);
}
//finished, now rename to .bak, log success or whatever...

0

我会说77%绝对是很高的。

可能有很多方法可以使工作更有效率(递归导入),但没有太多信息提供。

一个快速的解决办法是使用好的cmd调用脚本,并添加一些睡眠时间来延长负载时间。

我猜你在导入过程中也会占用网络带宽,所以如果你能分割任务,就可以防止你的网站停滞。

敬礼, /t


有没有一些有用的网站或关键词,我可以在上面进行研究? - flyclassic

0

0
这些工作占用了服务器的CPU使用率。我的问题是,什么程度被认为是高的?
这完全是主观的。在计算节点上,CPU使用率几乎始终是每个核心100%。这算高吗?不,一点也不,这是为了充分利用花钱购买的硬件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接