나는 동적 인 프로세스 관리자를 사용하여 php-fpm이 어떻게 작업자를 관리하는지 명확히하고 싶습니다.php-fpm은 동적 프로세스 관리자로 작업자를 어떻게 관리합니까?
의 우리가 설정 다음과 같은 한 가정 해 봅시다 :
pm = dynamic
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
- PHP-FPM 시작, 그것은 30 개 프로세스
- 을 생성합니다 어떤 연결이 없습니다. php-fpm은 min_spare_servers에 따라 10 명의 직원을 차단합니까? 예, 몇 시간이 지나면 발생합니까?
- nginx에는 40 개의 연결이 있습니다. php-fpm은 별도의 작업자와 각각의 연결을 제공 할 것이며 나머지 연결을 만족시키기 위해 즉시 추가 작업자를 생성 할 것입니까?
- nginx에는 80 개의 연결이 있습니다. 60 명의 근로자를 시작한 후에 php-fpm은 어떻게 작동할까요? (3)과 동일합니까?
- nginx에는 120 개의 연결이 있습니다. 100 명의 직원에게 100 명의 직원을 배정한 후 어떻게됩니까? php-fpm은 연결을위한 대기열을 사용합니까? 그것은 nginx를 제한 할 것인가? php-fpm이 "서버가 pm.max_children 설정에 도달했습니다"라는 메시지와 함께 연결을 시작합니까?
- nginx에는 50 개의 연결이 있습니다. nginx가 100에서 60 연결로 돌아갈 것입니까? 아니면 50? 즉시 40 명을 죽일 것인가 아니면 잠시 기다릴 것인가?
당신이보다시피,이 오히려 PHP-FPM이 프로세스를 관리하는 방법에 대한 일반화 된 질문입니다. 더 구체적으로 말하자면, pm.max_children과 pm.max_spare_servers의 차이점을 php-fpm으로 이해하고 싶습니다.
자세한 답변을 보내 주셔서 감사합니다. 5.에 대한 답을 명확히 해 주시겠습니까? 주로 php-fpm 대기열 연결을 사용합니까, 아니면 그냥 삭제합니까? –
상태 페이지를 사용하면 대기열과 관련된 일부 데이터를 가져올 수 있습니다. 매개 변수'listen queue len'은 큐에 넣을 수있는 최대 연결 수를 정의합니다. 이 숫자는 풀 설정 (listen.backlog)에 정의됩니다. php-fpm은 파일/tcp 소켓을 사용하기 때문에이 숫자는'/ proc/sys/net/core/somaxconn'에 정의 된 시스템 변수로 제한됩니다. – antonbormotov
대기열이 가득 차면 곧 요청이 거부됩니다. – antonbormotov