Php linux服务器上的CPU使用率有多高
我正在运行一些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.37.8 4:54.81 httpd 此服务器中还托管有网页/项目。每小时的作业可能会影响服务器以及其他web项目的加载时间 如果高,有什么方法可以提高CPU的效率Php linux服务器上的CPU使用率有多高,php,linux,cpu-usage,Php,Linux,Cpu Usage,我正在运行一些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
任何人都可以开导吗?我认为77%绝对是高的 可能有很多方法可以提高作业的效率(递归导入),但给出的信息不多 快速修复方法是使用nice cmd调用脚本, 再加上几次睡眠,随着时间的推移,负荷会逐渐增加 我猜你在导入过程中也会使网络饱和,所以你可以分割作业吗?这样可以防止你的站点停滞 问候,,
/t你总能完成你的任务 使用nice命令,您可以或多或少地赋予进程优先级 这些作业占用服务器的CPU使用量。 我的问题是,多少钱算高 这完全是主观的。在计算节点上,每个核心的CPU使用率几乎总是100%。那么高吗?不,一点也不,这是为了钱而购买的硬件的正确使用。一个更好的指标是,如果我简化,它是由于资源不足而等待的任务数量
您可以在
uptime
命令中访问它,例如:13:05:31最多6天,22:54,5个用户,平均负载:0.01,0.04,0.06
。最后的3个数字是最后一分钟、最后5分钟和最后15分钟的平均负荷。如果它达到1.00
,(无论内核数量如何),它都在等待它。尼斯不会有多大帮助,因为是mysql占用了您的cpu,
在php客户机上安装nice,如中所示
nice -10 php /home/me/myjob.php
不会有什么大区别
最好将作业分成更小的部分,调用php脚本
从cron开始,像
<?
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...
是的,每个CPU 100%。正常情况下,CPU负载恒定是个问题(但只有当它是个问题时,这才是个问题,保持“松弛”是好的,这样在需要时可以获得额外的处理能力,而且空闲更多的CPU可以运行得更冷/耗电更少)。如果PHP作业在功能需求范围内完成,并且没有违反任何使用指南或使其他进程陷入饥饿,我会说“足够好”。为了提高流程的效率,需要进行详细的审查/分析和分析。不过,不确定超线程或等效程序是否适合。我的平均负载是..平均负载:0.20、0.23、0.18it您不会遇到资源匮乏(在过去15分钟内,无论是处理器、磁盘还是网络)。你的电脑做它的工作没有困难。有什么有用的网站或关键字我可以研究一下吗?
<?
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...