admin 发表于 2021-4-16 18:09:17

PHP性能优化

PHP-FPM进程和线程特点:
1.PHP-FPM是阻塞的单线程模型,PHP-FPM的每个进程只开启一个线程,一个线程同时只能服务一个请求。
2.服务进程内存使用统计:
ps aux |grep php-fpm|awk '{mem+=$6}END{print mem}'

进程池:


查看进程池:
ps -ef
#可看到www池中进程分配

进程守护者:
user = nginx
group = nginx
#建议与nginx进程守护者保持一致

监听端口:
listen = 127.0.0.1:9000

进程管理器核心优化:
{
        1.动态创建子进程:
        pm = dynamic

        2.最大子进程数:
        pm.max_children = 200 (默认5)
        #每开启一个php-fpm进程要占用近20M左右的内存,假设服务器内存为4G

        3.初始进程数:
        pm.start_servers = 80 (默认2)

        4.最小空闲进程数:
        pm.min_spare_servers = 40 (默认1)

        5.最大空闲进程数:
        pm.max_spare_servers = 120 (默认3)

        6.最大多少次请求后子进程重生:
        pm.max_requests = 10240
        #有效降低内存消耗
}

Nginx进程监控:
location /status {
   stub_status;
}

进程状态监控:
pm.status_path = /phpstatus
{
        1.nginx设置方法:
        location /phpstatus {
          fastcgi_indexindex.php;
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;
          include      fastcgi_params;
        }       

        2.客户端测试:
        http://192.168.2.1/phpstatus

        3.进程状态信息:
        pool: www                               # 进程池名称
        process manager: dynamic      # 进程管理方式
        start time: 22/Jan/2016:15:49:00 +0800 # 启动时间
        start since: 375                    # 运行时长
        accepted conn: 7                    # 当前进程池接受的请求数
        listen queue: 0                            # 请求等待队列,如果不为 0 ,意味着 FPM 进程不足,需要增加
        max listen queue: 0                  # 最大等待队列数量
        listen queue len: 1024                 # SOCKET 等待队列长度
        idle processes: 4                 # 空闲进程数
        active processes: 1                  # 活跃的进程数
        total processes: 5                 # 总进程数
        max active processes: 1              # 最大活跃进程数
        max children reached: 0              # 达到最大进程数的次数,如果不为 0 ,意味着最大进程数不足,需要增加
        slow requests: 0                    # 慢请求数量,需要设置 slow log
}

生成访问日志:
access.log = log/$pool.access.log

日志格式:
access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

增加php-fpm打开文件数的限制:
rlimit_files = 65535

开启慢日志:
request_slowlog_timeout = 5
slowlog = log/$pool.log.slow

每个php-fpm进程的内存限制(php.ini):
memory_limit=128M

进程最大执行时间,与php.ini中max_execution_time作用相同(php.ini):
max_execution_time=30

重载配置文件:
pkill -USR2 php-fpm

页: [1]
查看完整版本: PHP性能优化