2016-10-04 162 views
0

我運行python程序CentOS VPS服務器。我在過去幾個月運行這個程序&我從一開始就面臨這個問題。Python多處理程序中間死亡

我通常從crontab運行這個python程序。該計劃每天都會按順序進行以下工作。

  1. 連接到MySQL數據庫&更新一些具體的信息。
  2. 使用multiprocessing劃分爲8-10個python實例。
  3. 每個實例使用Xvfb運行虛擬顯示(這是運行firefox所必需的)。
  4. 每個實例運行單獨的Firefox瀏覽器。
  5. 每個實例訪問一個網站以檢查更新(使用selenium)以獲取某些數據,如果它發生任何更改,則會更新到數據庫。
  6. 檢查每個實例關閉firefox

後所有這些過程通常需要60分鐘到90分鐘,如果它運行正常。但問題是它每次都運行不正常。它有時會在中途死亡。此外,我從未發現任何具體原因,爲什麼這些程序死亡,我該怎麼做。當我檢查topps,我發現python程序不存在,firefox & Xvfb仍然存在,等待python命令就像一個傻瓜。

由於過載或其他原因可能導致系統死亡。有時重新啓動系統有幫助。但是,我知道這不是一個好的解決方案。這就是爲什麼我試圖運行該程序,降低最低水平的良好值。但是,程序可能無法運行負值niceness值,所以仍然存在相同的問題。

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY   TIME CMD 
0 S 500 12673 12655 0 80 0 - 54957 wait ?  00:00:00 python 
1 S 500 12683 12673 0 80 0 - 62766 sk_wai ?  00:00:18 python 
1 S 500 12704 12673 0 80 0 - 59295 sk_wai ?  00:00:17 python 
1 S 500 12816 12673 0 80 0 - 59230 sk_wai ?  00:00:16 python 
1 S 500 12898 12673 0 80 0 - 59400 sk_wai ?  00:00:16 python 
1 S 500 12988 12673 0 80 0 - 59491 sk_wai ?  00:00:17 python 
1 S 500 13072 12673 0 80 0 - 59151 sk_wai ?  00:00:17 python 

同樣,我有我的的Windows 8桌面上運行這個程序,它運行良好高達26個實例(我從來沒有嘗試過多種:))。因爲它在一次加載頁面時運行的很多實例變得緩慢。這就是爲什麼我試圖通過拆分作業在3 VPS服務器上運行此程序的原因。

而且,我跑使用pythonfirefoxseleniumXvfb單過程中的另一個程序,並運行良好10-12小時,沒有任何打嗝。此外,這個程序與第一個程序幾乎完全相同,但唯一不同的是它只運行單個進程。而且,它不會像第一個那樣產生麻煩。

有什麼辦法可以確認每次都能正常運行程序嗎?

回答

0

我也遇到了同樣的問題。在做了大量研究之後,我總結說,Firefox不適合多處理。更好地使用PhantomJSChrome驅動程序。就我而言,當我看到ps或top時,我正在獲取殭屍Firefox過程。