首页 >后端开发 >PHP问题 >设置并发(php-fpm)和Nginx优化实践

设置并发(php-fpm)和Nginx优化实践

PHPz
PHPz原创
2023-04-21 09:09:291011浏览

随着互联网的发展,高并发的问题也越来越突出。在Web应用的开发过程中,如何优化并发请求处理,提高服务器的响应速度,是非常重要的一环。本文将介绍如何通过设置PHP-FPM并发及Nginx优化实践,提高Web应用的性能和并发处理能力。

一、PHP-FPM允许的并发处理

PHP-FPM 是 PHP 的一种 FastCGI 实现方式,是提高Web应用性能的常用方式。PHP-FPM 可以通过修改设置允许并发处理最大数量,从而提高同时处理请求数的能力。

1、找出当前 FPM 映射的用户:

    ps aux|grep "php-fpm" | grep -v root | awk -F " " '{print $1}' | sort | uniq

2、编辑php.ini文件,配置php-fpm.max_children参数,如下:

; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: 5
;php_fpm_pm.start_servers =

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
; Default Value: 0
;php_fpm_pm.min_spare_servers =

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
; Default Value: 0
;php_fpm_pm.max_spare_servers =

; The number of child processes to be created when pm is set to 'static' and the maximum
; number of child processes has been reached.
; This value sets the limit on the number of simultaneous requests that will be served
; Either explicitly with the fastcgi_max_children option, or implicitly through other
; settings referencing the maximum number of children.
; Default Value: 0
;php_fpm_pm.max_children = 50

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For endless
; request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;php_fpm_pm.max_requests = 500

3、编辑php-fpm.conf文件,配置pm.max_children参数如下:

pm.max_children = 200

其中 pm.max_children 参数表示 PHP-FPM 所允许的最大子进程数。可以根据服务器的CPU核数进行适当调整。在实践中,可以根据实际情况对比测试结果来确定最佳值。

二、Nginx优化

1、配置文件优化

Nginx 配置文件可以通过一些参数的优化来提高性能,例如:

    #设置工作进程数
    worker_processes auto;
 
    #进程事件处理的最大连接数
    events {
        worker_connections  1024;
    }
 
    #Http请求的默认设定
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;

        # HTTP 压缩
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_slience on;
        gzip_types       text/plain application/xml text/css text/javascript application/x-javascript application/xml+rss text/javascript+ktm text/javascript+js imag/svg+xml image/gif image/jpeg image/png;

        #处理访问日志
        access_log  logs/access.log  main;

        #处理错误日志
        error_log  logs/error.log  error;
    }

2、gzip压缩

gzip 压缩是一种常用的HTTP优化技术,可以显著减少传输数据量,从而加快页面的加载速度。Nginx 通过 gzip 模块来支持 gzip 压缩,可以在配置文件中启用它:

gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_slience on;
gzip_types       text/plain application/xml text/css text/javascript application/x-javascript application/xml+rss text/javascript+ktm text/javascript+js imag/svg+xml image/gif image/jpeg image/png;

其中,gzip_min_length 表示启用压缩的最小文件大小,gzip_buffers 表示 gzip 缓存区的数量和大小,gzip_types 表示要进行压缩的文件类型。

3、文件缓存

文件缓存可以有效减少服务器的访问压力,Nginx 提供了 open_file_cache 模块来实现文件缓存。可以在配置文件的 http 段中添加以下设置:

open_file_cache valid=60s;
open_file_cache_min_uses 1;
open_file_cache_errors on;

其中,open_file_cache valid=60s 表示缓存有效时间为 60 秒,open_file_cache_min_uses 表示打开文件最少 1 次才进行缓存,open_file_cache_errors 表示缓存出错是否重新打开文件。

4、启用缓存和keep-alive

启用缓存和 keep-alive 可以有效降低服务器响应时间。可以在配置文件中添加以下设置:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
proxy_cache_valid any 1h;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_slience on;
gzip_types       text/plain application/xml text/css text/javascript application/x-javascript application/xml+rss text/javascript+ktm text/javascript+js imag/svg+xml image/gif image/jpeg image/png;

#keep-alive
keepalive_timeout 65;
keepalive_requests 100;

其中,proxy_cache_path 表示缓存文件存放在 /var/cache/nginx 目录下,keys_zone 表示缓存名为 my_cache,inactive 表示缓存失效时间为 60 分钟。proxy_cache_key 表示根据请求和参数生成缓存名,proxy_cache_valid 表示缓存时间为 1 小时,proxy_cache_bypass 表示如果请求头包含 Pragma 字段,表示不使用缓存。keepalive_timeout 表示 keep-alive 连接的超时时间为 65 秒,keepalive_requests 表示一个连接最多处理 100 个请求。

三、总结

本文介绍了如何通过设置PHP-FPM并发及Nginx优化实践,提高Web应用的性能和并发处理能力。PHP-FPM 的并发处理能力可以通过修改配置文件中的参数来提高,Nginx 的优化则需要通过一些常用的模块和参数的设置来实现。在实际应用中,通过测试对比可以确定最佳的配置参数,从而实现高性能的 Web 服务器。

以上是设置并发(php-fpm)和Nginx优化实践的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn