ホームページ  >  記事  >  運用・保守  >  Nginxのunixソケットとtcpソケットの違いは何ですか

Nginxのunixソケットとtcpソケットの違いは何ですか

WBOY
WBOY転載
2023-05-16 13:37:061627ブラウズ

Nginx が fastcgi に接続するには、unix ドメイン ソケットと TCP の 2 つの方法があります。Unix ドメイン ソケットまたは IPC ソケットは、同じオペレーティング システム上の 2 つ以上のプロセスが相互に通信できるようにする端末です。パイプとは対照的に、Unix ドメイン ソケットはバイト ストリームとデータ キューの両方を使用できますが、パイプ通信はバイト ストリーム経由でのみ可能です。 Unix ドメイン ソケットのインターフェイスはインターネット ソケットに非常に似ていますが、通信に基礎となるネットワーク プロトコルを使用しません。 Unix ドメイン ソケットの機能は、POSIX オペレーティング システムのコンポーネントです。

TCP と UNIX ドメイン ソケット メソッドの比較

TCP は TCP ポートを使用して 127.0.0.1:9000 に接続し、Socket は UNIX ドメイン ソケットを使用してソケット /dev/shm に接続します/php-cgi.sock (多くのチュートリアルではパス /tmp が使用され、パス /dev/shm はディスクよりもはるかに高速な tmpfs です)

fastcgi_pass unix:/tmp/php-cgi.sock
fastcgi_pass 127.0.0.1:9000

サーバーの負荷が高くない場合、 tcp とソケットの違いはあまりありませんが、圧力が高い場合にはソケット方式の方が優れています。

PHP 5.3 以降で TCP をソケット モードに変更するための設定方法は次のとおりです。

php-fpm.conf (/usr/local/php/etc/php-fpm. conf)

;listen = 127.0.0.1:9000
listen = /dev/shm/php-cgi.sock

nginx設定ファイルのサーバーセクションの設定を変更し、httpモードをソケットモードに変更します

location ~ .*.(php|php5)?$
{
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}

php-fpmとnginx

service nginx restart
service php-fpm restart
ls -al /dev/shm

を再起動しますphp-cgi .sock ファイルの unix ソケット タイプを確認できます。理論上、unix ソケットはネットワークを経由しないため効率的ですが、安定性はあまり理想的ではありません。

以上がNginxのunixソケットとtcpソケットの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。