8 CPU のうち 1 CPU を 100% ロードする PHP スクリプトがあります。CPU リソースを共有して、PHP スクリプトをより高速に実行できますか?
PHP スクリプトを開始すると、1 つの CPU が 100% ロードされます。しかし、他のものには 1 ~ 5% の負荷があります。このため、私のスクリプトは 40 秒間実行されます。
すべてのプロセッサ間で負荷を共有できますか、それとも不可能ですか?
まず、CPU バウンドが40 秒続く場合は、アルゴリズムまたはプログラミング言語を再考する必要があります。PHP IMHOは、ユーザー向けのHTML/JSON/あらゆる出力形式生成エンジンとして依然として最適です。そのため、シェアード ナッシング アーキテクチャに基づいて構築されています。1 つのリクエストが 1 つの CPU を取得し、計算して終了します。複数の CPU 間で要求を分散することにより、このアーキテクチャを複数の CPU にスケーリングします。
とはいえ、1 つのリクエストが完了するまでに 40 秒かかる場合は、ワーカー スレッドを使用してうまくいく可能性があります。これは、メイン スレッドをスピンオフする必要があり、使用率の低い CPU で実行できます。しかし、繰り返しますが、これは規模を拡大するための複雑さの山です。そのルートを開始する前によく考えてください。
スレッド管理を自分で行うよりもおそらく簡単な方法は、作業を専用のワーカー プロセスに分岐させることです。Gearmanは、これを支援するよく知られたフレームワークです。