可能な限り速く、何千もの異なる Web サイトをスクレイピングする必要があります。1 つのノード プロセスで、1 秒あたり 10 個の URL を取得できました。タスクを 10 個のワーカー プロセスにフォークすると、1 秒あたり 64 リクエストに達する可能性があります。
どうしてですか?1 つのプロセスで 10 リクエスト/秒に制限されており、ワーカーを生成して 64 リクエスト/秒に達する必要があるのはなぜですか?
- 最大ソケット/ホスト (agent.maxSockets) 制限に達していません。すべての URL は一意のホストからのものです。
- 最大ファイル記述子の制限 (AFAIK) に達していません: 私の ulimit -n は 2560 で、lsof は私のスクレーパーが 20 個を超えるファイル記述子を使用しないことを示しています。
- sysctl.conf の kern.maxfiles、kern.maxfilesperproc、kern.ipc.somaxconn、および kern.ipc.maxsockets の設定を増やし、再起動しました。無効。
- ulimit -n を増やしてみました。変化なし。
私が知らない制限はありますか?私はMac OS-Xを使用しています。