Чем отличается запуск PHP-FPM через сокет Unix от сокета TCP / IP?
Существует два способа запуска PHP-FPM. Я знаю, что ничего пуленепробиваемого в технике нет, но каковы плюсы и минусы от обоих методов?
1 ответ:
Разница заключается главным образом в дополнительных накладных расходах, связанных с использованием полного сетевого стека для "упаковки" и "распаковки" каждого фрагмента данных. Имейте в виду, что накладные расходы незначительны для большинства развертываний
С помощью сокета (например, listen = ' / tmp / php-fpm.sock') имеет смысл, когда оба интерфейса (например, Nginx) и php-fpm находятся в одном окне и
- у вас есть возможность масштабировать по горизонтали как переднюю, так и заднюю часть вместе (скажем, вы строите контейнер с обоими и вы можно создать больше контейнеров, каждый с рабочей парой) или
- ваш единственный вариант-масштабировать вертикально тот "ящик", который вы используете (скажем, вы добавляете больше процессора, оперативной памяти и т. д.)
Использование TCP-соединения (например, listen = 127.0.0.1: 9000) имеет смысл, если вы хотите разделить фронт и бэк-энд, например, если вы решили масштабировать свою среду, имея один Nginx, принимающий соединения и передающий работу через сеть в кластер php-fpm коробки
Каждая среда отличается, поэтому, как всегда, единственный верный вариант-начать с одной настройки, которая кажется правильной, нагрузочного теста, и продолжать измерять производительность, чтобы вы могли попробовать разные варианты по мере развития ваших требований к нагрузке (обычно вы идете с тем, который дешевле реализовать или легче поддерживать, так как оба являются надежными, проверенными в бою подходами)