- 修改nginx的work_processes进程数量
woker_processes 8;
一般和CPU的核数设置一致;高并发可以和CPU核数2倍
可用lscpu命令查看cpu核心数或者/proc/cpuinfo
\top按1
一般1个核心处理1件事情
Intel超线程技术可以做到1个核心处理2件事情 nginx主配置内进行修改
http模块下添加
woker_processes 8;
- nginx服务进程均匀分配到不同cpu上进行处理 利用
worker_cpu_affinity
进行优化(cpu亲和力)让CPU的每隔核心平均
4颗CPU优化配置参数为0001 0010 0100 1000
2颗CPU优化配置参数为0101 1010
worker_cpu_affinity 0101 1010;
worker_cpu_affinity auto;
Linux系统设置cpu亲和力taskset (15k) 2核cup为例
Nginx主配置文件中在http模块下编写
woker_processes 2;
worker_cpu_affinity 0101 1010;
Worker_cpu_affinity auto;
-
优化 nginx 事件处理模型
利用use epoll参数修改事件模型为epoll模型
事件模型指定配置参数放置在event区块中
nginxepoll
处理数据异步
apacheselect
处理数据同步
参考: https://blog.csdn.net/xululu123/article/details/87526768
网络io阻塞时 也是nginx采取的方式,不会一直等,而是转而去处理其他请求。这就是异步非阻塞IO
- 优化nginx单进程客户端连接数 利用
worker_connections
连接参数进行调整
用户最大并发连接数=worker进程数(乘)worker连接数
最大连接数 = worker_processes * worker_connections/4
查看相关资料,生产环境中worker_connections 建议值最好超过9000
优化nginx服务进程打开文件数 利用
worker_rlimit_nofile
参数进行调整(65535)
还需要将linux系统文件最大打开数作出修改
使用ulimit -a可查看 默认1024 左侧命令修改为65535
重登shell即可echo '* - nofile 65535' >>/etc/security/limits.conf
优化nginx服务数据高效传输模式 利用
sendfile on
开启高效传输模式
tcp_nopush on
表示将数据积攒到一定的量再进行传输 数据量较多时使用 避免网络阻塞
tcp_nodelay on
表示将数据信息进行快速传输
数据量较少时 提高数据传输效率
sendfile on
配合使用两个参数使用
但两个参数只能选其一 需要特别注意
- 优化nginx服务超时信息
keepalive_timeout
优化客户端访问nginx服务端超时时间
http协议特点: 连接断开后会给你保留一段时间
client_header_timeout
优化服务端读请求头超时时间
client_body_timeout
优化两个请求主体发送间隔超时时间
send_timeout
优化两个响应信息的间隔超时时间
keepalive_timeout 60;
client_header_timeout 30;
client_body_timeout 20;
send_timeout 20;
-
优化 nginx 服务与 FastCGI 连接缓存和缓冲信息
优化利用FastCGI与PHP连接缓冲信息
优化利用FastCGI与PHP连接缓存信息
image.png
- 配置nginx gzip压缩实现性能优化 当文件大于一定数值时 我们传输数据就需要进行压缩 以节省网站的带宽资源
gzip on;
gzip_min_length 1k; #c设置大于1K才进行压缩
gzip_buffers 4 16k; #c设置压缩缓存
#gzip_http_version 1.0;
gzip_comp_level 2;
#c压缩级别 数字越大 压缩率(占用空间)越小 占用CPU越多
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php ;
#c哪些类型的文件 需要进行压缩 这些类型需用 mime type 媒体类型.
#mime types #c媒体类型(http) === 文件类型(linux)
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
#mime types
#c媒体类型(http) === 文件类型(linux)
- 配置
nginx expires
实现让客户端缓存数据 利用location匹配相应要缓存的信息,利用expires参数结合时间信息进行缓存。
把数据缓存到浏览器中.expires 30d;
缓存30天
location ~* \.(gif|jpg|jpeg|png|bmp|ico)$ {
root /var/www/img/;
expires 30d;
}