web-dev-qa-db-fra.com

Quelles sont les différences entre l'exécution de PHP-FPM sur un socket Unix et un socket TCP / IP?

Il existe deux façons d'exécuter PHP-FPM. Je sais que rien n'est à l'épreuve des balles en technologie, mais quels sont les avantages et les inconvénients des deux méthodes?

21
Leo Cavalcante

La différence réside principalement dans la surcharge supplémentaire liée à l'utilisation de la pile réseau complète pour "emballer" et "décompresser" chaque élément de données. Rappelez-vous que les frais généraux sont négligeables pour la plupart des déploiements

  • L'utilisation d'un socket (par exemple listen = '/tmp/php-fpm.sock') est logique lorsque le front-end (par exemple Nginx) et php-fpm sont dans la même case et

    1. Vous avez la possibilité de mettre à l'échelle horizontalement le front et le back-end ensemble (par exemple, vous créez un conteneur avec les deux et vous pouvez créer plus de conteneurs, chacun avec une paire de travail) ou
    2. Votre seule option est de mettre à l'échelle verticalement la "boîte" que vous utilisez (par exemple, vous ajoutez plus de CPU, de RAM, etc.)
  • L'utilisation d'une connexion TCP (par exemple, Listen = 127.0.0.1:9000) est judicieuse si vous souhaitez dissocier le front et le back-end, par exemple, si vous décidez de faire évoluer votre environnement en ayant un seul Nginx recevant les connexions et en passant le travail via le réseau à un cluster de boîtiers php-fpm

Chaque environnement est différent, donc comme toujours, la seule vraie option est de commencer avec la configuration qui semble correcte, de tester la charge et de continuer à mesurer les performances afin que vous puissiez essayer différentes options au fur et à mesure que vos besoins en charge évoluent (normalement, vous allez avec celle qui est moins coûteuse à mettre en œuvre ou plus facile à entretenir, car les deux sont des approches solides et éprouvées au combat)

19
Isaac Rosado