2011-01-06 94 views
3

我正在運行幾個PHP作業,它從Web服務中獲取100萬個數據並將它們插入數據庫。這些作業佔用服務器的CPU使用量。在Linux服務器上認爲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上更高效?

任何人都可以啓發?

+0

是的,這是每CPU * 100%*。它是*常量* CPU負載通常是問題(但它只是一個問題,如果它是一個問題,保持「鬆弛」是好的,以便提供額外的處理能力*在需要時,也可以運行更冷卻的CPU /吸取更少的力量)。如果PHP作業在功能需求範圍內完成,並且不違反任何使用準則或捱餓其他過程,我會說「足夠好」。爲了使該過程更高效,需要進行詳細的審查/分析和分析。 – 2011-01-06 10:40:31

+0

呃,*每個核心*。雖然不確定超線程或同等方法。 – 2011-01-06 10:46:04

回答

0

我會說77%是非常高的。

可能有很多方法可以使工作更有效率(遞歸導入),但給出的信息並不多。

一個快速修復將調用與好cmd, 腳本,並添加一些休眠隨着時間的推移負載。

我想你在導入過程中也會使網絡達到飽和,所以你可以分工來防止你的網站停滯不前。

問候, /噸

+0

任何有用的網站,或我可以研究這個關鍵字? – flyclassic 2011-01-10 02:16:31

0

這些工作佔用服務器的CPU使用率。 我的問題是,它被認爲有多高?

這完全是主觀的。在計算節點上,CPU的使用率一直是每個內核幾乎100%。這是高嗎?不,一點也不,它是正確使用爲錢而購買的硬件。

1

一個更好的指標是load average,如果我簡化,它是因爲資源不足而等待的任務量。

您可以在uptime命令中訪問它,例如:13:05:31 up 6 days, 22:54, 5 users, load average: 0.01, 0.04, 0.06。最後3位數字是最後一分鐘,最後5分鐘和最後15分鐘的負載平均值。如果達到1.00(不管內核的數量如何),那是它在等待的東西

0

尼斯也不會有多大效果,因爲它是MySQL的多數民衆贊成佔用你的cpu, 把漂亮的一個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...