搜尋

首頁  >  問答  >  主體

python - pyspider的分散式運行成功,2台slave跑,但是時間並沒有縮短問題?

1 台 master,2 台 slave,虛擬機器 ubuntu 下,設定如下:

master 的 config.json

{
  "taskdb": "mysql+taskdb://pyspider:pyspider-pass@192.168.209.128:3306/taskdb",
  "projectdb": "mysql+projectdb://pyspider:pyspider-pass@192.168.209.128:3306/projectdb",
  "resultdb": "mysql+resultdb://pyspider:pyspider-pass@192.168.209.128:3306/resultdb",
  "message_queue": "redis://192.168.209.128:6379/db",
  "phantomjs-proxy": "192.168.209.128:25555",
  "scheduler":{
     "xmlrpc-host":"0.0.0.0",
     "delete-time":10},
  "webui": {
    "port": 5555,
    "username": "",
    "password": "",
    "need-auth": false}
}

在主機上執行

#/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json schedule
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json webui
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json phantomjs

slave 的 config.json:

{
  "taskdb": "mysql+taskdb://pyspider:pyspider-pass@192.168.209.128:3306/taskdb",
  "projectdb": "mysql+projectdb://pyspider:pyspider-pass@192.168.209.128:3306/projectdb",
  "resultdb": "mysql+resultdb://pyspider:pyspider-pass@192.168.209.128:3306/resultdb",
  "message_queue": "redis://192.168.209.128:6379/db",
  "phantomjs-proxy": "192.168.209.128:25555",
  "fetcher":{"xmlrpc-host":"192.168.209.128"}
}

在兩個從機上運行

/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json fetcher
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json processor
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json result_worker

三個終端機

我是先命令列運行的,還沒有用 Supervisor 來管理進程,想先分散式調試成功後再用這個管理進程,命令列只是多開幾個終端而已。但是很奇怪,爬蟲程式能很順利的運行,但是單機跑和3台機子一起跑時間是一樣的,就差幾秒鐘而已,求解?

我看了終端輸出的訊息,是2 台slave 的提取的url 是不重複的,但是時間分開的有間隔的,比如說slave1 運行4 秒鐘,然後slave2 運行3 秒鐘,並不是並行的而是有順序,好奇怪!難道是 schedule 那裡是一個一個拿取任務,不能同時拿的嗎?

滿天的星座滿天的星座2713 天前985

全部回覆(1)我來回復

  • 迷茫

    迷茫2017-06-28 09:24:42

    在控制台裡控制速度。不管你是不是分佈式,只要速度設定的一樣,那麼用的時間就一樣。只有在硬體資源不夠用時(或是說硬體有瓶頸達不到你設定的速度時)分佈式才會提現出跑的快。個人這麼理解

    回覆
    0
  • 取消回覆