Ответ 1
Это жесткий файл cookie, потому что могут быть многочисленные факторы. Первая проблема с вашей конфигурацией - max_children смехотворно высока. Если каждый дочерний процесс использует 50 МБ, тогда 50 х 32768 легко истощит 16 ГБ.
Лучший способ определить max_children - выяснить, сколько использует каждый дочерний процесс, а затем указать максимальную оперативную память, которую вы хотели бы использовать php-fpm, а затем разделить значения. Например. Если у меня есть сервер на 16 ГБ, я могу запустить следующую команду, чтобы определить, сколько единиц потребляет каждый ребенок php-fpm:
ps -ylC php-fpm --sort:rss
Примечание! Может потребоваться явно указать пользователя, если php-fpm запущен под другим.
ps -ylC php-fpm --sort:rss -u www-data
где www-data - это пользователь, под которым выполняется php-fpm.
Вы находитесь в поиске столбца RSS; он записывает резидентную память и измеряется в КБ. Если у меня в среднем 50 Мбайт на процесс, и я хочу использовать максимум 10 ГБ для процессов php-fpm, то все, что я делаю, это 10000 МБ \50 МБ = 200. Поэтому на этой основе я могу использовать 200 детей для моего заявленного объема памяти.
Теперь, что касается серверов, вы захотите установить max_spare_servers на x2 или x4 количество ядер. Поэтому, если у вас есть 8-ядерный процессор, вы можете начать с значения 16 для max_spare_servers и перейти на 32.
Значение start_servers должно быть около половины значения max_spare_servers.
Вы также должны рассмотреть возможность отмены max_requests примерно до 500.
Кроме того, в дополнение к динамическому, значение pm также может быть установлено как статическое или по требованию. Static всегда будет иметь фиксированное количество серверов, работающих в любой момент времени. Это хорошо, если у вас есть постоянное количество пользователей или вы хотите гарантировать, что вы не нарушите максимальную память. По требованию будут запускаться процессы только тогда, когда это необходимо. Недостаток, очевидно, должен постоянно запускать/убивать процессы, которые, как правило, переводят на очень небольшую задержку в обработке запросов. Потенциал, вы используете ресурсы только тогда, когда они вам нужны. "Динамический" всегда запускает X количество серверов, указанных в опции start_servers, и создает дополнительные процессы по мере необходимости.
Если вы все еще испытываете проблемы с памятью, тогда подумайте о том, чтобы изменить pm на запрос по требованию.
Это общее руководство, ваши настройки могут нуждаться в дальнейшей настройке. Это действительно случай игры с настройками и работающими ориентирами для максимальной производительности и оптимального использования ресурсов. Это несколько утомительно, но это лучший способ определить эти типы настроек, потому что каждая настройка отличается.