1

バックエンドにC++APIを備えたRESTfulWebサービスがあります。FastCGIライブラリを使用してRESTインターフェイスを容易にしています。私のC++APIには、独立して使用できる複数の関数があります。私はそれをできるだけ速くする方法を探しています。これが私が得たいくつかのアイデアです:

  1. 実行する関数を取得し、その関数を実行して出力を返すFastCGIアプリケーションを1つ用意します。このように、API呼び出しは、次の呼び出しが別の独立した関数に対するものであっても、1つの「関数」が完了するまで待機し続けます。

  2. 複数のFastCGIアプリケーションがあり、それぞれがAPIから1つの関数にのみアクセスでき、それぞれがその特定のアプリの入力を取得し、その特定のアプリの出力のみを返します。

このようにして、すべての異なる関数に対して同時呼び出しを行うことができ、異なる独立した関数への呼び出しで構成されるFastCGIアプリケーションへの1つの汎用プロセスキューを作成する代わりに、所有する関数ごとに個別のプロセスキューを作成できます。

これはパフォーマンスが向上するように見えますが、このようなシステムを実装できるかどうかはわかりません。つまり、同じサーバーから多数のFastCGIアプリを並行して実行する必要があります。可能であれば、誰かがこれを実装する方法を教えてもらえますか?

4

1 に答える 1

2

各FastCGIアプリケーションは個別のプログラムであり、ループで実行され、FastCGI仕様で定義されたバイナリプロトコルでApacheと通信します。考えられる唯一の同時実行の問題は、CGIまたはPHPの同時要求を実行している場合に発生するのと同じ同時実行の問題です。ただし、FastCGIプロセスは終了しないため、限られたリソースを慎重に管理する必要があります。たとえば、データベースサーバーへのクライアントライセンスが10しかない場合、「開始時に開き、最後に閉じる」方法よりも適切に接続を管理しない限り、データベースを使用して11のFastCGIプロセスを持つことはできません。 CGIまたはPHP。

于 2012-05-29T02:37:36.153 に答える