あなたのリクエストは1回の実行スレッドで行われます。ボトルネックはほぼ確実にCPUですが、実際にカールするマルチコードを見たことがありますか? ...それは信じられないほどCPUが空腹です。あなたは本当にリクエストを処理するのに十分なコントロールを持っていないからです。 curl_multiを使用すると、一度に1000件のリクエストをオーケストレーションすることができますが、これは良い考えではありません。実行フローを細かく制御することができないため、curl_multiを効率的に使用する機会はほとんどありません。ソケットを処理してselect()を実行するだけで、あなたのコードを見ているCPU使用率が高くなりますコマンドライン。
このようなタスクでCPU使用率が高い理由は次のとおりです。 PHPは数分の1秒間動作するように設計されており、できる限り速く実行します。それは、そのような短い時間のため、CPUがどのように利用されているかは関係ありません。このようなタスクを長くすると、問題がより明らかになり、すべてのオペコードで発生するオーバーヘッドがプログラマに見えるようになります。
あなたは実装を変更できないと言ってきましたが、まだ完全な回答があると思います。このようなタスクは、カールマルチよりスレッディングのためにはるかに適しており、そしてあなたも、1000件のスレッドがcurl_multi限りCPUを消費するアイドル状態のCPU上で自分のデバイスに左http://php.net/Thread
で始まるを、読み始める必要があり、その点はあります応答のすべてのバイトをダウンロードし、要求のすべてのバイトをアップロードするコードを正確に制御でき、CPU使用量が懸念される場合は、usleepを明示的に呼び出すか、意味のある方法で接続の使用を制限することによって "素敵な"さらに、リクエストは別のスレッドで処理できます。
私は1000スレッドを行うことをお勧めしません、それはおそらくではないです。するべきことは、 "いい"効率的な方法でリクエストを作成してサービスすることを仕事とするスタッカブル(文書を参照)を設計し、ワーカーの設計プール(github/pecl拡張ソースの例を参照)を実行することです新しく設計されたリクエスト...
Linuxのボックスにファイルの制限が表示されています(使用しているユーザーとして 'ulimit -a'を実行してください、それはあなたの手当です)。それとは別に、ボトルネックがネットワークになる可能性があります。私はCPUが気になることを疑う... – Wrikken
オープンファイルの制限をどのように制御しますか? (私はこれについてはあまり知らない!) –
[スタックオーバーフローが提供する](http://stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in -linux) – Wrikken