Как вычислить дочерний процесс php-fpm в кластере Kubernetes - PullRequest
0 голосов
/ 06 октября 2018

Я недавно перенес свое приложение с одного сервера с докером в Google Kubernetes Engine по причинам масштабирования.Я новичок в платформе kubernetes, и, возможно, я еще не до конца понимаю ее концепцию, но я понимаю основы.

Я успешно перенес свое приложение на cluster size of 3 each with 1vCPU and 3.75 GB RAM

Теперь я обнаружил, какая конфигурация является лучшей для процессов php-fpm, запущенных в кластере kubernetes.Я прочитал несколько статей о том, как настроить процессы php-fpm, такие как

https://serversforhackers.com/c/php-fpm-process-management

https://www.kinamo.be/en/support/faq/determining-the-correct-number-of-child-processes-for-php-fpm-on-nginx

В моем кластере у меня есть Elasticsearch, Redis, Frontend и REST Api и мое понимание о kubernetes, у каждого из которых есть свои собственные модули, работающие на моем кластере, я попытался получить доступ к модулю для REST Api и увидеть 1 vCPU и 3,75 ГБ оперативной памяти, которые я установил в своих характеристиках кластера.А в ОЗУ осталось только 1,75 ГБ, поэтому я думаю, что есть другие сервисы или модули, использующие память.

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

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 8 

Но моя проблема в том, что модуль работает на работающем, и если я изменю базу конфигурации на оставшейся доступной памяти (на основе статей, которыми я поделился выше по вычислению pm.max_children), я мог бы в конечном итоге потреблять модульвсе пространство памяти осталось и не сможет быть выделено для других сервисов.Моя проблема имеет смысл?или есть идея, которую мне не хватает?

Основываясь на статье, поскольку у моего работника 3,75 ГБ ОЗУ, а другие службы уже используют 1,5 ГБ ОЗУ, поэтому моя лучшая цель - 1 ГБ ОЗУ.

pm.max_children приводит нас к 1024Мб / 60 Мб = 17 max_children

pm.max_children = 17
pm.start_servers = 8
pm.min_spare_servers = 7
pm.max_spare_servers = 10
pm.max_requests = 500

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

Спасибо, что дочитали до конца, и заранее спасибо за ваш вклад.

1 Ответ

0 голосов
/ 09 октября 2018

GKE поставляется с несколькими системными модулями (такими как kube-DNS и fluentd).Некоторые из этих модулей не сильно расширяются, это означает, что если вы добавите дополнительные узлы, у них будет больше доступных ресурсов.

Узлы также работают под управлением ОС, поэтому часть памяти выделяется для этого.Вы также можете просмотреть ресурсы, доступные для каждого узла, используя «kubectl description no | grep Allocatable -A 5»

. Здесь будет показано количество ресурсов, оставшихся после использования узла.Используя «kubectl description no | grep Allocated -A 5», вы можете просмотреть объем памяти и ЦП, которые уже запрашиваются текущими модулями.

При этом следует выбирать количество дочерних процессов на основетвоя потребностьКак только вы узнаете, какой объем памяти понадобится модулю, задайте запросов ресурсов и ограничьте настройкой своего модуля, чтобы планировщик kubernetes мог разместить php-fpm на узле с достаточными ресурсами.

* 1010Сила Kubernetes в том, что вы говорите ему, что хотите, и он попытается сделать это.Вместо того, чтобы беспокоиться о том, сколько вы можете уместить, выберите количество для вашего стручка на основе ожидаемой / требуемой производительности и скажите kubernetes, сколько памяти вам нужно.Таким образом, вы также можете увеличить количество модулей, используя HPA вместо управления и увеличения количества дочерних процессов.
...