プレブリーフィング:
私の質問は意図的に広範ですが、ローカルソケット(/tmp/somesocket.socket)を介して提供されるphp-fpm(fcgi)に接続するnginxを扱っています。
Nginxには、fcgiバックエンドへの接続を維持するための設定があります( http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn )。
これが私の質問に関係しています。
質問:
Linuxでは、ローカルソケットに接続するときに、キープアライブなどが存在しますか?
接続を存続させることで、接続の作成/破棄に関連するオーバーヘッドを(ほんの少しでも)取り除くことができますか?
ありがとう。
ここでは、ローカルのUNIXソケットを意味していると思います。
Linuxでは、ローカルソケットに接続するときに、キープアライブなどが存在しますか?
いいえ、キープアライブはリモート側のタイムアウトを防ぎます。ホストは接続の両側のステータスを知っているため、キープアライブは冗長です。
接続を存続させることで、接続の作成/破棄に関連するオーバーヘッドを(ほんの少しでも)取り除くことができますか?
はい、より多くのファイル記述子を維持するという犠牲を払って、それはおそらく実際的には非常に安価な費用です。接続を設定して閉じると、5つのシステムコール(クライアントで開いて接続する、サーバーで受け入れる、クライアント/サーバーで閉じる)が発生しますが、接続を維持すると、必要になるまで接続が回避されます。