2016-10-04 113 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过程。