PHP-FPMをUnixソケットとTCP / IPソケットで実行する場合の違いは何ですか?
PHP-FPMを実行するには、これらの2つの方法があります。技術的に完全なものは何もないことは知っていますが、両方の方法の長所と短所は何ですか?
違いは主に、すべてのデータを「パック」および「アンパック」するために完全なネットワークスタックを使用することで追加されるオーバーヘッドです。オーバーヘッドはほとんどの展開で無視できることを覚えておいてください
ソケットの使用(例:listen = '/tmp/php-fpm.sock')は、フロントエンド(例:Nginx)とphp-fpmの両方が同じボックスにあり、
- フロントエンドとバックエンドの両方を一緒に水平方向にスケーリングするオプションがあります(両方でコンテナーを構築していて、それぞれが有効なペアでさらにコンテナーを作成できるとしましょう)または
- 唯一のオプションは、使用している1つの「ボックス」を垂直方向にスケーリングすることです(たとえば、CPU、RAMなどを追加します)。
TCP接続(たとえば、listen = 127.0.0.1:9000)を使用することは、フロントエンドとバックエンドを分離したい場合、たとえば、 1つのNginxが接続を受信し、ネットワーク経由でphp-fpmボックスのクラスターに作業を渡すことによる環境
すべての環境は異なるため、いつものように、唯一の真のオプションは、正しいと思われる1つのセットアップから始めて、負荷テストを行い、パフォーマンスを測定し続けることで、負荷要件の変化に応じてさまざまなオプションを試すことができます(通常、どちらも実装されており、テスト済みのアプローチであるため、実装コストが安く、保守も簡単です。