2017-10-02 4 views
0

「AerysにはI/O機能を使用しないでください。 警告:https://amphp.org/aerys/io#blocking-io PDOの使用が必要な場合(例えば、Proophコンポーネント)、異なるリクエストを処理するために初期化されたアプリケーションインスタンスを再利用したい場合は、Aerysの代わりにPPMを使用する必要がありますか?使用方法Aerysの上にあるPPM

私は既存のPPMアダプタ(例えば、Symfony)に縛られていません。 Aerys(https://github.com/php-pm/php-pm/pull/267)の上でPPMを使用する場合、要求応答ロジックにAerysコード(ルータなど)を再利用する方法はありますか?

答えて

1

ブロッキング機能を使用する場合は、コマンドラインスクリプトがより高い値になるように、-wスイッチを使用してワーカー数を増やすことができます。確かに最適ではありませんが、十分な労働者では、発生するかもしれないレイテンシの増加を除いて、ブロッキングが目立たないようにすべきです。

もう1つの可能性は、ブロッキング呼び出しをamphp/parallelという1つまたは複数のワーカースレッドに移動することです。

応答が比較的速い限り、すべてが正常であるはずです。問題は非常に長いブロックであるため、多くの負荷があり、処理が遅くなり、タイムアウトする可能性がある場合に開始されます。

PHP-PMは、Aerysを直接使用するとあまり効果がありません。リクエストを現在フリーのワーカーにリダイレクトしますが、負荷が十分に高い場合はカーネルのロードバランシングが十分に有効で、すべてのリクエストが長い時間に1人のワーカーにルーティングされるわけではありません。実際、Aerysを使うことはおそらく、生産準備が整っており、ボトルネックになるかもしれない1人のマスターではなく複数の独立した労働者がいるので、おそらく良いでしょう。 PHP-PMはこれをより良い方法で解決できますが、現在実装されていません。さらに、Aerysはキープアライブ接続をサポートしています。これは現在PHP-PMがサポートしていません。

+0

ありがとうございました!私は複数のAerysワーカーを使用し、amphp/parallelを介してPDOを使用しようとします。 –

関連する問題