Performance
在升級硬體以提高程序性能時,我應該首先考慮 CPU、RAM 還是兩者兼而有之?
我有一個用 PHP 編寫的簡單腳本(在閱讀了很多 QA 之後,它的記憶體管理似乎不太理想)。這是一個非常小的腳本,它循環遍歷文件夾中的配置文件;將其與數據庫中的記錄進行比較,如果存在差異,它會相應地更新記錄。
雖然腳本不到 20 行,但我在任何給定時間都處理了超過 30,000 個配置文件。
我的電腦是 Intel 雙核 3.06 Ghz,在 Ubuntu 12.04 上執行 8 Gigs 記憶體。
當我執行腳本時,CPU 幾乎立即爬升到 100% 並停留在那裡。使用 top 命令,我可以看到 PHP 程序的記憶體不斷增加,直到最終達到 8 gigs 並崩潰。(我通常在它崩潰之前通過腳本獲得大約 3/4,目前大約需要 90 分鐘。)
從硬體的角度來看,我怎樣才能讓這個過程更有效率?如果我升級到四核,執行腳本所需的時間會減少一半嗎?如果我升級到六核,那會減少 4 所需的時間嗎?此外,以 2 倍或 4 倍的速度完成腳本是否也意味著我減少了記憶體使用量,或者我仍然需要升級 RAM?
我強烈建議使用 inotify 來監視更改,並且僅在發生更改時才做出反應,而不是不斷地讀取文件以查找更改(這可能導致 IO 等待比實際 CPU 使用率更多):
文件: http: //php.net/manual/en/book.inotify.php
有關更多背景資訊,請參閱http://en.wikipedia.org/wiki/Inotify。
更多的 CPU 只是意味著你會更快地用完 RAM。我不得不說你最好的選擇是更正腳本中的記憶體管理。要使用那麼多 RAM,我必須認為您有記憶體洩漏。