Назад | Перейти на главную страницу

Почему PHP-FPM использует только один процесс?

Глядя на мою страницу статистики PHP-FPM, похоже, что сейчас только один процесс обрабатывает все соединения.

Я предполагаю, что запросы выполняются настолько быстро, что пока нет необходимости использовать другой процесс. Было бы так?

Вот что я вижу на своей странице статистики PHP-FPM:

pool                    www
process manager         static
start since             432796
accepted conn           90399
listen queue            0
max listen queue        1
listen queue len        128
idle processes          63
active processes        1
total processes         64
max active processes    6
max children reached    0

Вот как выглядит моя конфигурация PHP-FPM:

[General]
 pid = /var/run/php5-fpm.pid
 error_log = /var/log/php5-fpm.log
 syslog.ident = php-fpm
 syslog.facility = 24
 log_level = unknown value
 emergency_restart_interval = 0s
 emergency_restart_threshold = 0
 process_control_timeout = 0s
 process.max = 0
 process.priority = undefined
 daemonize = yes
 rlimit_files = 30000
 rlimit_core = 0
 events.mechanism = epoll

[www]
 prefix = undefined
 user = www-data
 group = www-data
 listen = 127.0.0.1:9000
 listen.backlog = 128
 listen.owner = undefined
 listen.group = undefined
 listen.mode = undefined
 listen.allowed_clients = 127.0.0.1
 process.priority = undefined
 pm = static
 pm.max_children = 64
 pm.start_servers = 8
 pm.min_spare_servers = 4
 pm.max_spare_servers = 10
 pm.process_idle_timeout = 10
 pm.max_requests = 12800
 pm.status_path = /fpm
 ping.path = undefined
 ping.response = undefined
 access.log = undefined
 access.format = undefined
 slowlog = /var/log/www.log.slow
 request_slowlog_timeout = 5s
 request_terminate_timeout = 120s
 rlimit_files = 30000
 rlimit_core = 0
 chroot = undefined
 chdir = /
 catch_workers_output = yes
 security.limit_extensions = .php .phar

Почему PHP-FPM использует только один процесс?

Потому что ... 1 достаточно. Но это не значит, что количество активных процессов всегда равно 1.

Разделите терминал на 2 региона: в первом типе:

$ watch 'lynx -dump http://domain.com/fpm'

а во втором попробуйте что-то вроде этого:

$ ab -c 1000 -n 10000 http://domain.com/fpm

затем посмотрите, что происходит в первом регионе:

pool:                 www
process manager:      dynamic
start time:           04/Sep/2012:23:19:24 +0700
start since:          3441
accepted conn:        42296
listen queue:         0
max listen queue:     8
listen queue len:     128
idle processes:       18
active processes:     3
total processes:      21
max active processes: 21
max children reached: 0