2011-11-08 27 views
1

我在多臺服務器上運行數千個python進程,這些進程關閉,查找網站,做一些分析,然後將結果寫入中央MySQL數據庫。Python進程和MySQL

這一切正常工作約8小時,然後我的腳本開始等待MySQL連接。 在檢查頂部時,顯然MySQL守護進程已經過載,因爲它正在使用多達90%的CPU。

當我停止所有的腳本時,MySQL會在一段時間後繼續使用資源。 我認爲它仍在更新索引? - 如果是這樣,是否有確定它正在處理哪些索引,或者如果不是它實際上在做什麼?

非常感謝提前。

+0

「數千」是他們的一次性進程(spawn-task-die)還是長時間運行的進程? – aitchnyu

+0

它們是長時間運行的過程,即獲取一些數據並對其進行處理,獲取更多數據並對其進行處理等。 – dan360

回答

0

可以做很多的調整來提高MySQL的性能。考慮到你的工作量,你可能從MySQL 5.5和更高版本中受益匪淺,這提高了多處理器機器的性能。有問題的機器打虛擬機嗎?如果是分頁出來,那麼mysql的性能會很糟糕。

我建議的:mysql的

  • 檢查版本。如果可能,請獲取最新的5.5版本。

  • 查看名爲my.cnf的mysql的配置文件。確保它在你的機器上有意義。有用於運行MySQL的小型,中型,大型等機器的示例配置文件。我認爲默認設置是針對具有< 1 Gig的RAM的機器。

  • 正如其他答案所示,請啓用慢速查詢日誌記錄。