Чем отличается запуск PHP-FPM через сокет Unix от сокета TCP / IP?


Существует два способа запуска PHP-FPM. Я знаю, что ничего пуленепробиваемого в технике нет, но каковы плюсы и минусы от обоих методов?

1 5

1 ответ:

Разница заключается главным образом в дополнительных накладных расходах, связанных с использованием полного сетевого стека для "упаковки" и "распаковки" каждого фрагмента данных. Имейте в виду, что накладные расходы незначительны для большинства развертываний

  • С помощью сокета (например, listen = ' / tmp / php-fpm.sock') имеет смысл, когда оба интерфейса (например, Nginx) и php-fpm находятся в одном окне и

    1. у вас есть возможность масштабировать по горизонтали как переднюю, так и заднюю часть вместе (скажем, вы строите контейнер с обоими и вы можно создать больше контейнеров, каждый с рабочей парой) или
    2. ваш единственный вариант-масштабировать вертикально тот "ящик", который вы используете (скажем, вы добавляете больше процессора, оперативной памяти и т. д.)
  • Использование TCP-соединения (например, listen = 127.0.0.1: 9000) имеет смысл, если вы хотите разделить фронт и бэк-энд, например, если вы решили масштабировать свою среду, имея один Nginx, принимающий соединения и передающий работу через сеть в кластер php-fpm коробки

Каждая среда отличается, поэтому, как всегда, единственный верный вариант-начать с одной настройки, которая кажется правильной, нагрузочного теста, и продолжать измерять производительность, чтобы вы могли попробовать разные варианты по мере развития ваших требований к нагрузке (обычно вы идете с тем, который дешевле реализовать или легче поддерживать, так как оба являются надежными, проверенными в бою подходами)