2013-11-10 4 views
1

У меня есть сайт Drupal с NGINX и PHP-FPM с 3 пулами.Что такое пулы PHP-FPM и что такое pm.max_children?

Что я хочу знать, что такое пулы FPM или просто дать мне ссылки на хорошую документацию, я искал эту тему, но все, что я нашел, - это настроить «X», чтобы получить лучшую производительность.

Кроме того, что такое pm.max_children? Недавно я заметил в журнале, что, когда пул www1 достигает этого значения, пул www1 перестает работать, блокируя также страницу на моем сайте, пока я не перезагружу PHP-FPM. Почему я через некоторое время добираюсь до pm.max_children? Есть ли способ обнаружить и реагировать в этом случае ... перезагрузка PHP-FPM? Есть ли способ избежать достижения pm.max_children?

Спасибо всем за ваши знания.

PD: Я использую конфигурацию perusio для Drupal и Nginx.

ответ

4

Ну, вы можете просто сказать, что каждый пул похож на отдельный php, например, для меня я использую пулы для запуска каждого другого пользователя, дайте каждому соответствующие ограничения с точки зрения ресурсов и т. Д. Для отдельных веб-сайтов, работающих на одном и том же сервер.

Я не понимаю, хотя почему 3 бассейна для одного и того же сайта, вы используете upstream в nginx?

Что касается max_children - это количество порождаемых процессов, разрешенное fpm для обработки параллельных подключений. Если у вас много параллельных соединений, тогда вам лучше увеличить это число, если число достигнуто. Fpm не будет появляться. другого ребенка и ждать, пока кто-нибудь освободится, чтобы обработать запрос ожидания.

EDIT:

Попробуйте играть с этой конфигурации, может быть полезно, вот отрывок из конфигурационного файла, по умолчанию он прокомментировал.

; The number of requests each child process should execute before respawning. 
; This can be useful to work around memory leaks in 3rd party libraries. For 
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. 
; Default Value: 0 
;pm.max_requests = 500 

Вот и еще один

; The timeout for serving a single request after which the worker process will 
; be killed. This option should be used when the 'max_execution_time' ini option 
; does not stop script execution for some reason. A value of '0' means 'off'. 
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 
; Default Value: 0 
;request_terminate_timeout = 0 
+0

Благодаря Mohammad, я не думаю, что у меня есть, что число одновременных соединений. Мне кажется, что некоторые «процессы» блокируются, а счетчик - как активная параллельная связь. Это имеет смысл для вас? Я не уверен, использую ли я восходящий поток, я использую конфигурацию другого пользователя (https://github.com/perusio/drupal-with-nginx). –

+0

Единственное, что у меня есть 3 бассейна, я знаю, что если пул www1 достигнет pm.maxchildren, тогда www2 продолжит ... что хорошо, я думаю. По крайней мере, это то, что я понял на страницах статуса пула. –

+0

да, вот конфигурация, которую я ожидал https://github.com/perusio/drupal-with-nginx/blob/D7/upstream_phpcgi_unix.conf, во всяком случае, я думаю, что проблема не в nginx, это может быть страница который не отключается и сохраняет соединение. Я не уверен, что как бы мы могли обнаружить что-то подобное (на какой странице) –

Смежные вопросы