素材巴巴 > 程序开发 >

四、Nginx 性能调优

程序开发 2023-09-12 19:34:36

一、Nginx 性能调优


1. worker_processes 工作进程最大连接数



# `2`个工作进程
 worker_processes 2;
 

2. worker_cpu_affinity 工作进程绑定 CPU 内核



# 如:如果有`2`颗`CPU`内核,就可以进行如下配置
 worker_processes 2;
 worker_cpu_affinity 10 01;
 

# 如:如果有`4`颗`CPU`内核,就可以进行如下配置
 worker_processes 4;
 worker_cpu_affinity 1000 0100 0010 0001;
 

在这里插入图片描述


3. worker_priority 工作进程优先级


  1. nice 值是进程的 静态优先级(它的取值范围是 -20~+19)。
    -20 是 最高优先级,+19 是 最低优先级。

4. worker_rlimit_nofile 工作进程可以打开的最大句柄描述符个数



5. 是否打开 accept 负载均衡锁


  1. 当某一个 worker 进程 建立的连接数量,达到 worker_connections 配置的 最大连接数 的 7/8 时。
  2. 会大大地减小 该 worker 进程 试图建立 新 TCP 连接 的机会。

  1. 如果关闭它,那么 建立 TCP 连接 的耗时会更短。
  2. worker 进程 之间的 负载 会 非常不均衡,因此 不建议关闭它。

6. 使用 accept 锁后到真正建立连接之间的延迟时间



二、Nginx 高速缓存


1. 静态缓存


http {# 指定缓存区的根路径proxy_cache_path /data/nginx/cache_item # 缓存层级及目录位数# 缓存目录层级最高三层,每层`1~2`个字符表示# 如:`1:1:2`表示`一级目录:二级目录:三级目录`# `1`表示最后一个字符为目录名、`2`表示最后两个字符为目录名。levels=1:1:2 # 缓存块名称及内存块大小# 超出大小后最早的数据将会被清除# 如:`cache_item:500m`表示声明一个名为`cache_item`大小为`500m`的缓存。keys_zone=cache_item:500m # 最长闲置时间(有效期) # 如:`30d`如果一个数据被闲置`30`天将会被清除inactive=30d # 缓存区硬盘最大值,超出最大值闲置数据将会被清除max_size=10g;
 }
 

location {# 指定缓存区,对应`http.keys_zone`中配置的缓存区proxy_cache cache_item;# 通过参数拼装缓存`key` # 如:`$host$uri$is_args$args`以全路径的`md5`值做做为`key`proxy_cache_key $host$uri$is_args$args;# 为不同的`HTTP`状态码设置缓存有效期proxy_cache_valid 200 304 12h; # 总体缓存时间expires 7d; 
 }
 

http {# 缓存声明proxy_cache_path /data/nginx/cache_qs levels=1:2 keys_zone=cache_qs:500m inactive=20d max_size=1g;
 }
 

在这里插入图片描述
在这里插入图片描述


2. 清除缓存

# 下载`ngx_cache_purge`模块包(这⾥`nginx`版本为`1.6.2 purge`对应`2.0`版)
 wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz# 查看已安装模块
 ./sbin/nginx -v# 进⼊`Nginx`安装包⽬录,重新安装`--add-module`为模块解压的全路径
 ./configure --prefix=/root/svr/nginx --with-http_stub_status_module --with-http_ssl_module --
 add-module=/root/svr/nginx/models/ngx_cache_purge-2.3# 重新编译
 make# 拷⻉安装⽬录`/objs/nginx`⽂件⽤于替换原`nginx`⽂件# 检测查看安装是否成功
 nginx -t
 

location ~ /clear(/.*) {# 允许访问的`IP`allow 127.0.0.1;allow 192.168.0.193;# 禁⽌访问的`IP`deny all;# 配置清除指定缓存区和路径(与`proxy_cache_key`一致)proxy_cache_purge cache_item $host$1$is_args$args;
 }
 

  1. 访问生成缓存文件:http://www.qs.com/?a=1
  2. 访问清除缓存文件:http://www.qs.com/clear/?a=1
    如果指定缓存不存在,则会报 404 错误。

三、Nginx 集群


1. keepalived 安装运行

yum install keepalived# 配置文件`/etc/keepalived/keepalived.conf`
 

systemctl start keepalived.service
 systemctl stop keepalived.service
 systemctl restart keepalived.service
 

tail -f /var/log/messages
 


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。