zoukankan      html  css  js  c++  java
  • php-fpm进程数控制

    一、名词解释

    CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议。负责处理URL的请求,启动一个进程,将客户端发送的数据作为输入,有Web服务器收集程序的输出并加上合适的头部,再发送回客户端。

    FastCGI是基于CGI的增强版本的协议,不同于创建新的进程来服务请求,使用持续的进程和创建的子进程来处理连串的进程,这些进程由FastCGI服务器管理,开销更小,效率更高。

    PHP-FPM是PHP实现的FastCGI Process Manager(FastCGI进程管理器),用于替换PHP FastCGI的大部分功能,适用于高负载网站。支持的功能如:

      1. 平滑停止/启动的高级进程管理功能

      2. 慢日志记录脚本

      3. 动态/静态子进程产生

      4. 基于php.ini的配置文件

    二、PHP-FPM配置

    PHP-FPM配置文件为php-fpm.conf (例如:php-fpm容器中的/usr/local/etc/php-fpm.d/xlaravel.pool.conf)。下面所有的子进程均指php-fpm进程,可以在终端通过 ps aux |grep php 查看到。

    • 显示 php-fpm: pool www 的代表work子进程(实际处理请求)
    • 显示 php-fpm: process master 的代表master主进程(负责管理work子进程)
    user = www-data
    group = www-data
    #启动进程的帐户和组
    
    listen = 0.0.0.0:9000
    
    pm = dynamic
    #如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由以下参数决定:
    pm.max_children = 20   #,子进程最大数
    pm.start_servers = 45   #,启动时的进程数
    pm.min_spare_servers = 30   #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程   
    pm.max_spare_servers = 60   #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
    
    
    request_terminate_timeout = 300
    #设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的’max_execution_time’因为某些特殊原因没有中止运行的脚本有用. 设置为 ’0′ 表示 ‘Off’.当经常出现502错误时可以尝试更改此选项。
    
    
    catch_workers_output = yes
    #重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空.
    php-fpm优化参数介绍
    
    他们分别是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。
    
    pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。
    
    下面4个参数的意思分别为:
    pm.max_children:静态方式下开启的php-fpm进程数量
    pm.start_servers:动态方式下的起始php-fpm进程数量
    pm.min_spare_servers:动态方式下的最小php-fpm进程数
    pm.max_spare_servers:动态方式下的最大php-fpm进程数量
    
    区别:
    如果dm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。
    如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。
    系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,
    然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数
    ps auxw|head -1;ps auxw|sort -rn -k4|head -40
    # 查看消耗内存最多的前40个进程
    
    
    ps -fe |grep "php-fpm"|grep "pool"|wc -l
    # 查看服务器上一共开了多少的 php-cgi 进程
  • 相关阅读:
    基于集合成工控机Ubuntu系统安装分区详解
    MySql连接问题
    再记一个提供webServices的网址
    J​a​y​r​o​c​k​.​J​s​o​n​读​取​j​s​o​n​数​据​(​n​e​t​)
    jquery mobile页面跳转后,必须重新刷新页面js方可有效
    删除数据库失败 因为当前数据库正在使用
    如何解决自定义404页面在IE等浏览器中无法显示问题
    HTTP协议详解(真的很经典)
    如何在XAMPP中设置多个网站
    apache php 多站点配置 重新整理
  • 原文地址:https://www.cnblogs.com/karl-python/p/12525257.html
Copyright © 2011-2022 走看看