2010-08-17 241 views
2

對於模糊的問題抱歉,但是我剛剛寫了一些執行自己CLI的php代碼,我敢肯定它的行爲不當。當我在命令行上運行「top」時,它顯示給予任何單個進程的資源非常少,但是在40-98%到iowait時間(%wa)之間。我通常在%us和%sy之間分配約0.7%的資源,其餘資源進入空閒進程(通常在20-50%之間)。將PHP作爲CLI運行時的CPU負載高%

這臺服務器正在執行MySQL查詢,很容易,300x的時間需要其他服務器運行相同的查詢,它甚至需要通過SSH登錄似乎永遠...所以儘管有一些閒置的CPU剩下的時間,似乎很清楚發生了一些非常糟糕的事情。無論腳本在運行什麼,都在更新我的MySQL數據庫,但是當它們啓動時,它似乎呈指數級慢。

我需要一些想法來充當啓動點,以便診斷髮生了什麼事情。

,我想知道有些事情是:

  1. 如何確認有多少腳本實際上正在運行
  2. 反正是有確認這些腳本實際上是關閉的時候都通過,而不僅僅是「佔用」CPU佔用時間和內存?
  3. 我應該檢查什麼樣的瓶頸以確保我不會創建太多的腳本實例,因此這不會再發生。

我意識到這可能是一個巨大的問題,但我更願意遵循提供的任何鏈接並閱讀此內容......我只需要知道從哪裏開始尋找。

回答

0

高愛荷華州可能意味着你有一個緩慢/有缺陷的磁盤。試着用S.M.A.R.T來檢查它。磁盤監視器。

http://www.linuxjournal.com/magazine/monitoring-hard-disks-smart

  1. PS auxww | grep SCRIPTNAME
  2. 相同。
  3. 爲什麼你要運行一個以上的腳本實例?
+0

這個想法是通過調用一個腳本來消除平均網絡延遲,而不是在網卡等待響應時調用另一個腳本,而不是坐在那裏無所事事。起初它運行良好,每分鐘平均下載量增加了78%,直到它崩潰。 – 2010-08-18 14:06:49

+0

我知道你正在調用命令行腳本而不是發出網絡請求。那麼爲什麼你說「網卡等待響應」呢?我以爲你只是消除了這一點。 – 2010-08-18 20:08:36

+0

我有幾臺主/從關係的服務器,他們必須互相交談,而且,許多腳本都是Web代理從外部站點下載和處理信息。 – 2010-08-19 12:03:02

4

高iowait意味着您的磁盤帶寬已飽和。這可能只是因爲你用太多的查詢淹沒你的MySQL服務器,並且它正在試圖加載數據來執行它們的磁盤達到最大。

或者,您可能在物理內存上運行不足,導致大量的磁盤IO進行交換。

要啓動診斷,運行vmstat 60 5分鐘,並檢查輸出 - siso列顯示換入和換出,並且bibo線顯示其它IO。 (編輯你的問題並粘貼輸出以獲得更多幫助)。