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 那裡是一個一個拿取任務,不能同時拿的嗎?
迷茫2017-06-28 09:24:42
在控制台裡控制速度。不管你是不是分佈式,只要速度設定的一樣,那麼用的時間就一樣。只有在硬體資源不夠用時(或是說硬體有瓶頸達不到你設定的速度時)分佈式才會提現出跑的快。個人這麼理解