python - pyspider的分布式運行成功,2臺slave跑,但是時間并沒有縮短問題?
問題描述
1 臺 master,2 臺 slave,虛擬機 ubuntu 下,配置如下:
master 的 config.json:
{ 'taskdb': 'mysql+taskdb://pyspider:[email protected]:3306/taskdb', 'projectdb': 'mysql+projectdb://pyspider:[email protected]:3306/projectdb', 'resultdb': 'mysql+resultdb://pyspider:[email protected]: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:[email protected]:3306/taskdb', 'projectdb': 'mysql+projectdb://pyspider:[email protected]:3306/projectdb', 'resultdb': 'mysql+resultdb://pyspider:[email protected]: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 那里是一個一個拿取任務,不能同時拿的嗎?
問題解答
回答1:在控制臺里控制速度。不管你是不是分布式,只要速度設置的一樣,那么用的時間就一樣。只有在硬件資源不夠用時(或是說硬件有瓶頸達不到你設置的速度時)分布式才會提現(xiàn)出跑的快。個人這么理解
