web-dev-qa-db-ja.com

ソケット接続へのキープアライブは存在しますか?

プレブリーフィング:

私の質問は意図的に広範ですが、ローカルソケット(/tmp/somesocket.socket)を介して提供されるphp-fpm(fcgi)に接続するnginxを扱っています。

Nginxには、fcgiバックエンドへの接続を維持するための設定があります( http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn )。

これが私の質問に関係しています。

質問:

Linuxでは、ローカルソケットに接続するときに、キープアライブなどが存在しますか?

接続を存続させることで、接続の作成/破棄に関連するオーバーヘッドを(ほんの少しでも)取り除くことができますか?

ありがとう。

1
anonymous-one

ここでは、ローカルのUNIXソケットを意味していると思います。

Linuxでは、ローカルソケットに接続するときに、キープアライブなどが存在しますか?

いいえ、キープアライブはリモート側のタイムアウトを防ぎます。ホストは接続の両側のステータスを知っているため、キープアライブは冗長です。

接続を存続させることで、接続の作成/破棄に関連するオーバーヘッドを(ほんの少しでも)取り除くことができますか?

はい、より多くのファイル記述子を維持するという犠牲を払って、それはおそらく実際的には非常に安価な費用です。接続を設定して閉じると、5つのシステムコール(クライアントで開いて接続する、サーバーで受け入れる、クライアント/サーバーで閉じる)が発生しますが、接続を維持すると、必要になるまで接続が回避されます。

5
Matthew Ife