2

サーバーの IP とポートを結合した後、プロセスをフォークしたかどうかを知りたかったのです。フォークは接続を受け入れることができますか。10 個のフォークをすべて受け入れようとして実行している場合、それを拡張するには、1 つ以上が同じ接続を受け入れる可能性がありますか、それともロックされていますか?

数日前、私は php で http サーバーを書きたいと思っていました。そのため、一度に複数の接続を処理できます。接続を受け入れたマスター プロセスは、データを読み取り、UNIX ソケットを介してスレッドに渡します。これまでのところ、私のラップトップでは、現在の日付と時刻を示す小さなページで 1 秒あたり 1000 の接続を取得できます。ボトルネックの 1 つはマスター プロセスです。もともと、接続のファイル記述子を取得してソケットに渡し、データを読み取って処理するのが大好きでした。

4

1 に答える 1

1

はい、フォークされた子は、同じ (継承された) リッスン ソケットで新しい接続を受け入れることができます。

すべての子プロセスでブロッキングを使用していると仮定するとsocket_accept()、100 プロセスまで増加してもパフォーマンスの問題は発生しません。オペレーティング システムは、接続を処理するために 1 つの子プロセスを起動します。

abまたは同様の負荷生成ツールを使用して、ベンチマークすることをお勧めします。

于 2013-03-29T10:23:21.173 に答える