nginx性能优化之CPU设定

1.CPU参数worker_cpu_affinity使用说明

Nginx默认没有开启利用多核cpu,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu的性能。cpu是任务处理,计算最关键的资源,cpu核越多,性能就越好

规则设定
(1)cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭

(2)worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了

示例:linode VPS 最低配,8核CPU,nginx配置信息:
配置实例:

1、2核CPU,开启2个进程

worker_processes 2;
worker_cpu_affinity 01 10;
2、2核CPU,开启4进程

worker_processes 4;
worker_cpu_affinity 01 10 01 10;
3、2核CPU,开启8进程

worker_processes 8;
worker_cpu_affinity 01 10 01 10 01 10 01 10;
4、8核CPU,开启2进程

worker_processes 2;
worker_cpu_affinity 10101010 01010101;
说明:10101010表示开启了第2,4,6,8内核,01010101表示开始了1,3,5,7内核

2 设置 nginx 的工作进程数量

(默认值:1)

最大为CPU的逻辑处理器数量,比如6核心12线程的CPU,最大设置就是12,如果是6核心6线程,则为6。

需要考虑系统资源分配,每多一个运行进程,内存占用都要多一份(比如一个进程为400M,两个就是400M*2=800M) worker_processes 1; # 设置 nginx 最大文件描述符打开限制 # 在 Linux 系统中,每建立一个连接都是打开一个文件描述符(作为反向代理或负载均衡连接数量会翻倍,因为内外各一个)

所以文件的打开限制决定了 nginx 的最大连接数(应大于 worker_processes * worker_connections) # 此处配置需要参考系统的限制(ulimit -n),不能超过系统的最大限制

worker_rlimit_nofile 65535;

events {

# 此为 Linux 系统特为处理大批量文件描述符而作改进的 poll 事件模型
use epoll;

# 设置每个工作进程可处理的最大连接数量
# 此设置将直接影响工作进程的内存固定占用,每个连接大概占用内存 0.4~0.5KB 左右
# 此值应小于 worker_connections / worker_processes
worker_connections 65535;

# 允许同时接受多个网络连接
multi_accept on;

}

http {
# 配置文件类型映射,以及默认的 mime 类型
include mime.types;
default_type application/octet-stream;

# 设置请求头缓冲区大小,超过后会使用下面的配置大小
# client_header_buffer_size 1K
# 设置更大的请求头缓冲区大小,如果请求头超出可能会返回 HTTP 414
# large_client_header_buffers 8K

# 设置请求体缓冲区大小,大于此缓冲区大小的,将写入磁盘文件
# client_body_buffer_size 16K
# 设置请求体最大大小(此项影响上传文件的最大大小)
client_max_body_size 1000m;

# 提供了一种减少拷贝次数,提升文件传输性能的方法。(静态文件由内核直接发送给 socket,而不是由进程读取到内存再发送)
sendfile        on;

# 降低数据包发送频率,当数据包满时再发送,减少网络数据包数量,降低网络拥塞情况,仅在 sendfile on 时生效
tcp_nopush     on;

# 为 http 请求保持 tcp 连接,避免短时间内多次 http 请求反复三次握手来建立 tcp 连接
# 配置保持连接的数量(默认值:100)
keepalive_requests 100;
# 配置保持连接的时长
keepalive_timeout  10;

gzip on;                        # 开启 gzip,会增加对 cpu 的资源消耗
gzip_min_length 1k;                # 低于 1kb 的资源不压缩
gzip_comp_level 2;                # 压缩级别 1-9,越大压缩率越高,同时消耗 cpu 资源也越多。
# 需要压缩哪些响应类型的资源,多个空格隔开。有些格式的文件压缩效率较低,不建议压缩。
gzip_types text/plain application/json application/javascript application/x-javascript text/javascript text/xml text/css;
gzip_disable "MSIE [1-6]\.";    # 配置禁用 gzip 条件,支持正则。此处表示 ie6 及以下不启用 gzip(因为 ie 低版本不支持)
gzip_vary on;                    # 配置添加 Vary 响应头

# 暂不知道用途,主要用来解决:could not build the proxy_headers_hash 错误
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;

server {
    listen       80;
    
    server_name  demo.psy-cloud.com;

    location * {
        return 404;
    }
}

}

你可能感兴趣的:(数字化,nginx,性能优化,linux)