php-fpm 최적화, 3가지 작동 모드에 대한 자세한 설명

세 가지 작동 모드

주문형, 정적, 동적(메모리 우선 순위, 정적 풀, 서비스 우선 순위)

주문형

php-fpm이 시작되면 작업자 프로세스는 시작되지 않고 작업자는 요청 시 시작되며 링크가 들어온 후에만 시작됩니다.

listen = 127.0.0.1:9001
pm = ondemand 
pm.process_idle_timeout = 60
pm.max_children = 10

연결이 되면(링크만 생성되고 데이터 없이는 텔넷도 생성됨) 새 작업자 프로세스를 생성하고 작업자 프로세스 수는 max_children 설정에 의해 제한되며 전역 프로세스에 의해 제한됩니다. 최대 설정(세 가지 모드 모두 이것으로 제한됨, 아래에 설명된 전역 구성 항목이 있음) 유휴 시간이 process_idle_timeout 설정을 초과하면 작업자 프로세스가 파괴됩니다.

  • 장점: 트래픽 수요에 따라 생성, 시스템 리소스 낭비 없음,
  • 단점: php-fpm은 연결이 짧기 때문에 각 요청에 대해 연결이 먼저 설정되면 트래픽이 많은 시나리오에서 마스터 프로세스가 바빠져 CPU를 낭비하고 트래픽이 많은 모드에 적합하지 않습니다.
  • 이 모드는 더 이상 사용되지 않습니다

동적

작업자의 일부는 초기에 생성되며 작업자 수는 작업 중에 동적으로 조정됩니다.최대 작업자 수는 pm.max_children 및 process.max에 의해 영향을 받습니다.

listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
  1. 유휴 프로세스 수가 min_spare_servers보다 적으면 새 자식 프로세스를 생성하고 총 자식 프로세스 수는 pm.max_children보다 작거나 같고 process.max보다 작거나 같습니다.
  2. 유휴 프로세스 수가 max_spare_servers보다 크면 시작 시간이 가장 긴 하위 프로세스가 종료됩니다.
  3. 자식 프로세스(유휴 상태)의 수가 max_children보다 크면 경고 로그가 인쇄되고 처리가 종료됩니다.
  4. 프로세스가 max_children보다 작음, num 계산, num 작업자 시작
  5. 장점: 동적 확장, 시스템 리소스 낭비 없음
  6. 단점: 모든 작업자가 작업 중 새로운 요청이 오면 작업자 프로세스 생성을 기다려야 함 가장 긴 대기 시간은 1초(프로세스를 확인하고 생성하기 위해 내부에 1초 타이머가 있음) 빈번한 시작 및 중지 프로세스가 CPU를 소모하므로 요청 횟수가 안정적이며 자주 파기해야 함

공전

고정된 수의 작업자를 시작하고 유휴 작업자 수 및 활성 작업자 수와 같은 프로세스의 일부 상태 정보를 계산하는 데 사용되는 1초 타이머도 있습니다.

pm.max_children = 10   #必须配置这个参数,而且只有这个参数有效
  1. 장점: 부하를 동적으로 판단할 필요가 없으며 성능이 향상됩니다.
  2. 단점: 정적으로 구성할 경우 max_children의 수만 고려하면 되며 cpus 수와 응용 프로그램의 응답 시간에 따라 달라짐 고정된 크기의 프로세스를 한 번에 시작하면 시스템 리소스가 낭비됨

모드 선택

  1. Static은 메모리가 큰 머신에 적합하고, dynamic은 메모리가 작은 2g 서버에 적합하며, ondemand 모드는 2g 미만의 작은 메모리에 적합합니다.
  2. 프로세스가 많을수록 프로세스 관리 오버헤드와 프로세스 컨텍스트 전환이 증가하고 동시 실행 수는 CPU 코어 수를 초과하지 않으며 CPU 집약적이며 pm.max_children은 다음과 같은 경우 CPU 코어 수를 초과할 수 없습니다. 아니요, 오후를 변경할 수 있습니다. .max_children의 값은 CPU 코어 수보다 크게 설정됩니다.
  3. 프로세스 수를 동적으로 생성
    • N+20%에서 M/m 사이
    • N은 CPU 코어 수, M은 메모리, m은 각 PHP 프로세스의 메모리 수입니다.
  4. 정적 프로세스 수
    • M/(m*1.2)
    • pm.max_requests, 최대 요청 수를 설정합니다. 이 수에 도달하면 작업자 프로세스가 자동으로 장기화되고 번식 메모리가 예기치 않게 증가합니다.

기타 구성 설명

# 全局设置
process.max = 10 #最大进程数

# www.conf
user = nobody # 进程发起的用户和用户组,nobody为任意用户,user必须设置,group不用
group = www

listen = [::]:9000

pm = dynamic   # 进程池管理器如何控制子进程数量,static,静态,固定值  dynamic 动态 ondemand
pm.max_children = 16    # 同一时刻能够存活的最大子进程数
pm.start_servers = 4    # 启动时启动的子进程数
pm.min_spare_servers = 2   # 处于空闲 idle状态的最小进程,如果空闲进程数量小于这个值,那么相应的子进程会被创建, 可以有效的减少创建的进程数,请求处理不过来,才会循序渐进的创建 
pm.max_spare_servers = 16   # 最大空想进程数,空闲子进程数超过这个值,那么相应的子进程会被杀掉
catch_workers_output = yes  # worker进程的标准输出和错误输出会重定向到错误日志中,没有设置会输出到/dev/null

;slowlog = xxx   # 默认关闭,慢日志路径
;request_slowlog_timeout = 0   # 脚本执行超过多久就记录到日志文件

Supongo que te gusta

Origin blog.csdn.net/mafa1993/article/details/130585726
Recomendado
Clasificación