Выбор ответа Senior Производительность: OPcache и FPM обновлено

Подбор pm.max_children

Вопрос

Сервер с 8 ГБ, под PHP-FPM можно отдать 6 ГБ, воркер в среднем потребляет 60 МБ. Какое значение pm.max_children разумно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Около 100: 6000 МБ / 60 МБ. Максимальное число воркеров ограничивается памятью: при превышении сервер уйдёт в своп или OOM killer начнёт убивать процессы.

Варианты ответа

  1. Около 100: 6000 МБ / 60 МБправильный ответ
  2. Около 8, по числу ядер
  3. 1000, чтобы точно хватило
  4. pm.max_children не влияет на память

Разбор

Максимальное число воркеров ограничивается памятью: при превышении сервер уйдёт в своп или OOM killer начнёт убивать процессы. Оценка: доступная память, делённая на средний (лучше с запасом, 95-й перцентиль) размер воркера. Число ядер ограничивает CPU-нагрузку, но PHP-воркеры большую часть времени ждут базу и сеть, поэтому их обычно больше, чем ядер. Ещё учитывают нагрузку на базу: 100 воркеров это до 100 соединений.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.