マスター 1 台、スレーブ 2 台、仮想マシン ubuntu では、構成は次のとおりです。
マスターの config.json
:
ホストで実行
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json スケジュール
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json webui
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json phantomjs
スレーブのconfig.json
:
2台のスレーブマシンで実行
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json フェッチャー
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json プロセッサ
/usr/local/bin/pyspider -c /home/pu/pyspider/conf.json result_worker
3 つの端子
最初にコマンド ラインから実行しましたが、プロセスの管理にスーパーバイザーを使用していません。分散デバッグが成功した後にこの管理プロセスを使用したいと考えています。コマンド ラインはさらにいくつかのターミナルを開くだけです。でも不思議です。クローラー プログラムはスムーズに実行できますが、1 台のマシンで実行するのにかかる時間は、3 台のマシンで実行するのと同じです。ほんの数秒の違いです。説明していただけますか?
ターミナルが出力した情報を見てみると、2つのスレーブが抽出したURLは繰り返されておらず、時間は間隔で区切られています。たとえば、スレーブ1は4秒間実行され、次にスレーブ2は3秒間実行されます。秒、平行じゃない、順番に並んでるから不思議!スケジュールでは、タスクは 1 つずつ実行され、同時に実行することはできないのでしょうか。
コンソールで速度を制御します。分散しているかどうかに関係なく、同じ速度に設定していれば、同じ時間かかります。ハードウェア リソースが不十分な場合 (またはハードウェアにボトルネックがあり、設定した速度に到達できない場合) のみ、分散システムがより高速に動作しますか?それは個人的にも分かります