一、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-alivekeepalive_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优化实践的详细内容。
