ファイル記述子の合格を使用する際の既存の接続の状態?
-
30-09-2019 - |
質問
UnixソケットとsendMSG / recVMSGを使用して、リクエストを失うことなくソケットファイルの記述子を新しいサーバープロセスに渡すために、Webサーバーをいじり回しています。 ABでテストしている間、クライアント接続が長引くことがわかり、Apachebench(AB)には「APR_POLL:指定されたタイムアウトが期限切れ(70007)」というエラーが表示されます。
オープン接続を役に立たないファイル記述子のアドレスに変更があると疑っていましたが、すべての要求の最後に接続が閉じられていることを確認すると、いくつかのリクエストが失敗します。
ソケットレベルに余分な奇妙さはありますか、それともABが奇妙ですか?他に考慮すべきことはありますか?
編集:クライアントとしてPHPを使用してリクエストを行うと、サイクル中にも失速します。
解決
これは、電話回線を介して電話を送信しようとするのと同等です。意味がありません。ソケットFDは、接続のエンドポイントを識別します。別のホストが接続を必要とする場合、それは独自の接続をmkeしなければなりません。あなたはそれをあなたの一人に与えることはできません。
他のヒント
ソケットでリスニングされているマスターサーバー(着信接続を受け入れる)があり、複数のワーカープロセスがある場合は理にかなっています。
適切な/フリーワーカー(たとえば、すべてのワーカーが使用しているTCP接続の数に基づいて)を選択し、マスターからワーカーに着信接続の記述子を渡すことができます。これは、複数の労働者が共通のエンドポイントで聞くとき、「雷の群れ」を避けるのに役立ちます。
所属していません StackOverflow