Страницы

Поиск по вопросам

пятница, 29 ноября 2019 г.

Что такое пул в php-fpm?

#php #php_fpm


В php-fpm по умолчанию, сразу после установки есть пул www. Все об этом знают и надеюсь
понимают, но я не совсем. Примерно понимаю что это типа выделенная группа процессов
php-fpm. Может быть наверное несколько пулов. 

Кто-то может объяснить или дать ссылку на документацию где объясняется что такое
пул php-fpm и зачем он нужен? Сам я путем гугления не нашёл.

Заранее благодарю.
    


Ответы

Ответ 1



Пулы php-fpm - позволяют запускать процессы php под разными пользователями, тем самым создавая более безопасную среду. Так же, каждому пулу - можно выделять свои ресурсы и переопределять переменные php.ini Например: Для production версии сайта - один пул, для development версии сайта - другой пул. Каждый пул работает или на отдельном порте, или на отдельном сокет файле. Как утверждают некоторые мануалы по оптимизации php-fpm - то для сайта с высокой нагрузкой разумней использовать несколько пулов. Цитата: In our experience, multiple upstream backends on the same machine, produce higher throughout than a single one.

Ответ 2



Пул (pool) в программировании - это контейнер для повторно используемых ресурсов. Он используется для экономии на создании ресурса. Идея в том, что после завершения использования ресурса он не уничтожается - а возвращается в пул, откуда его можно быстро достать для повторного использования. Не следует путать пул и кэш - хотя их назначение и схоже, но в кэше хранятся разные объекты, в пуле же все ресурсы абсолютно одинаковы (смысл пула как раз в том чтобы ресурс, взятый из пула, никак не отличался от только что созданного). К примеру, открытие соединения с БД - операция долгая, поскольку надо устанавливать сетевое соединение. Поэтому соединения с БД часто объединяют в пулы соединений. Создание нового потока - операция дорогая. Поэтому библиотеки, предназначенные для асинхронной работы, часто содержат пул потоков. А на винде пул потоков даже является частью WinAPI. В случае php-fpm, каждый запрос обрабатывается в некотором процессе. Запуск процесса - операция еще более дорогая чем создание потока - а потому используются пулы процессов. Ну а поскольку в случае с php-fpm может потребоваться создавать разные процессы (с разными настройками), а один пул может содержать только одинаковые ресурсы - php-fpm создает несколько пулов, каждый со своими настройками. Вот так настройки процесса стали настройками пула, а пул из паттерна программирования стал единицей администрирования.

Комментариев нет:

Отправить комментарий