Мы запустили облачный хостинг больше года назад, но продолжаем улучшать его. На этот раз мы перевели все сайты с PHP-FPM на FastCGI. Почему это было сделано, ведь PHP-FPM считается более перспективным?
Мы провели несколько экспериментов и выяснили, что в схеме с PHP-FPM бутылочным горлышком может стать apache, который был один на весь сервер хостинга.
Старая схема запуска PHP выглядела так:
Общий на весь сервер nginx
–▼–
Общий на весь сервер apache
–▼–
Индивидуальный мастер php-fpm
–▼–
Индивидуальные обработчики php-fpm
В новой схеме мы избавились от PHP-FPM. Сейчас на каждом сайте работу PHP обеспечивает индивидуальный apache.
Новая схема запуска PHP выглядит так:
Общий на весь сервер nginx
–▼–
Индивидуальный apache + модуль FastCGI
–▼–
Индивидуальные обработчики php
Кроме этого, уменьшилось потребление оперативной памяти каждым сайтом. Ведь чтобы добиться изоляции сайтов на облачном хостинге, мы запускали отдельный мастер процесс PHP-FPM для каждого сайта. И этот процесс постоянно занимал около 40 Мб оперативной памяти.
Вот как это повлияло на память в масштабах всего сервера: