我在多臺服務器上運行數千個python進程,這些進程關閉,查找網站,做一些分析,然後將結果寫入中央MySQL數據庫。Python進程和MySQL
這一切正常工作約8小時,然後我的腳本開始等待MySQL連接。 在檢查頂部時,顯然MySQL守護進程已經過載,因爲它正在使用多達90%的CPU。
當我停止所有的腳本時,MySQL會在一段時間後繼續使用資源。 我認爲它仍在更新索引? - 如果是這樣,是否有確定它正在處理哪些索引,或者如果不是它實際上在做什麼?
非常感謝提前。
我在多臺服務器上運行數千個python進程,這些進程關閉,查找網站,做一些分析,然後將結果寫入中央MySQL數據庫。Python進程和MySQL
這一切正常工作約8小時,然後我的腳本開始等待MySQL連接。 在檢查頂部時,顯然MySQL守護進程已經過載,因爲它正在使用多達90%的CPU。
當我停止所有的腳本時,MySQL會在一段時間後繼續使用資源。 我認爲它仍在更新索引? - 如果是這樣,是否有確定它正在處理哪些索引,或者如果不是它實際上在做什麼?
非常感謝提前。
嘗試啓用慢查詢日誌:http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
而且,看看SHOW PROCESSLIST的輸出;在mysql shell上,它應該給你更多的信息。
可以做很多的調整來提高MySQL的性能。考慮到你的工作量,你可能從MySQL 5.5和更高版本中受益匪淺,這提高了多處理器機器的性能。有問題的機器打虛擬機嗎?如果是分頁出來,那麼mysql的性能會很糟糕。
我建議的:mysql的
檢查版本。如果可能,請獲取最新的5.5版本。
查看名爲my.cnf的mysql的配置文件。確保它在你的機器上有意義。有用於運行MySQL的小型,中型,大型等機器的示例配置文件。我認爲默認設置是針對具有< 1 Gig的RAM的機器。
「數千」是他們的一次性進程(spawn-task-die)還是長時間運行的進程? – aitchnyu
它們是長時間運行的過程,即獲取一些數據並對其進行處理,獲取更多數據並對其進行處理等。 – dan360