web-dev-qa-db-ja.com

UNIXソケットのパフォーマンスvs TCPポート

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

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

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

50
Jason

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

ただし、ソケットは同じサーバー上で実行されているプログラムからのみ到達可能であり(ネットワークサポートがないことは明らかです)、プログラムはソケットファイルにアクセスするために必要なアクセス許可を持っている必要があることに注意してください。

45

TCPを使用している場合は、ネットワークスタック全体も使用しています。同じマシンを使用している場合でも、これは、パケットがカプセル化およびカプセル化解除されて、ネットワークスタックと関連プロトコルを使用することを意味します。

UNIXドメインソケットを使用する場合、それ以外の場合に必要なすべてのネットワークプロトコルを通過する必要はありません。ソケットは、ハードドライブのiノードによってのみ識別されます。

29
Silverrocker