python - pyspider的分布式運(yùn)行成功,2臺(tái)slave跑,但是時(shí)間并沒有縮短問題?
問題描述
1 臺(tái) master,2 臺(tái) slave,虛擬機(jī) 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}}
在主機(jī)上運(yùn)行
/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'}}
在兩個(gè)從機(jī)上運(yùn)行
/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
三個(gè)終端
我是先命令行運(yùn)行的,還沒有用 Supervisor 來管理進(jìn)程,想先分布式調(diào)試成功后再用這個(gè)管理進(jìn)程,命令行只是多開幾個(gè)終端而已。但是很奇怪,爬蟲程序能很順利的運(yùn)行,但是單機(jī)跑和3臺(tái)機(jī)子一起跑時(shí)間是一樣的,就差幾秒鐘而已,求解?
我看了終端輸出的信息,是 2 臺(tái) slave 的提取的 url 是不重復(fù)的,但是時(shí)間分開的有間隔的,比如說 slave1 運(yùn)行 4 秒鐘,然后 slave2 運(yùn)行 3 秒鐘,并不是并行的而是有順序,好奇怪!難道是 schedule 那里是一個(gè)一個(gè)拿取任務(wù),不能同時(shí)拿的嗎?
問題解答
回答1:在控制臺(tái)里控制速度。不管你是不是分布式,只要速度設(shè)置的一樣,那么用的時(shí)間就一樣。只有在硬件資源不夠用時(shí)(或是說硬件有瓶頸達(dá)不到你設(shè)置的速度時(shí))分布式才會(huì)提現(xiàn)出跑的快。個(gè)人這么理解

網(wǎng)公網(wǎng)安備