UnixソケットとTCPポートのパフォーマンス

UnixソケットとTCPポートのパフォーマンス

たとえば、php-fpmの場合:

#listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

TCPポートを介してUNIXソケットベースのリスナーを使用することに大きなパフォーマンスの違いはありますか? (PHPだけでなく一般的な場合もあります。サービスごとに違いますか?)

答え1

UNIXドメインソケットは、ループバックインターフェースを介してTCPソケットよりも優れたパフォーマンス(より少ない数のデータコピー、より少ないコンテキスト切り替え)を提供する必要があります。

ソケットは同じサーバー上で実行されているプログラム(明らかにネットワークサポートなし)からのみアクセスでき、プログラムにはソケットファイルにアクセスするために必要な権限が必要です。

答え2

TCPを使用すると、ネットワーク全体のスタックも使用されます。同じコンピュータ上にあっても、これは、ネットワークスタックと関連プロトコルを使用するためにパケットがカプセル化され、カプセル化されていないことを意味します。

Unix ドメインソケットを使用する場合は、必要な他のすべてのネットワークプロトコルを強制的に実装する必要はありません。ソケットはハードドライブのiノードとしてのみ識別されます。

関連情報