首页 文章 正文 Nginx-调优 2024-03-20 877阅读 0评论 一、全局模块下的调优 1.1 worker_processes 2 打开nginx.conf配置文件,可以看到worker_processes的默认值为1。 worker_processes,工作进程,用于指定Nginx的工作进程数量。其数值一般设置为CPU内核数量,或内核数量的整数倍。 不过需要注意,该值不仅仅取决于CPU内核数量,还与硬盘数量及负载均衡模式相关。在不确定时可以指定其值为auto。 1.2 worker_cpu_affinity 01 10 将worker进程与具体的内核进行绑定。不过,若指定worker_processes的值为auto,则无法设置worker_cpu_affinity。 该设置是通过二进制进行的。每个内核使用一个二进制位表示,0代表内核关闭,1代表内核开启。也就是说,有几个内核,就需要使用几个二进制位。 1.3 worker_rlimit_nofile 65535 用于设置一个worker进程所能打开的最多文件数量。其默认值与当前Linux系统可以打开的最大文件描述符数量相同。 二、events模块下的调优 2.1 worker_connections 1024 设置每一个worker进程可以并发处理的最大连接数。该值不能超过worker_rlimit_nofile的值。 2.2 accept_mutex on on:默认值,表示当一个新连接到达时,那些没有处于工作状态的worker将以串行方式来处理; off:表示当一个新连接到达时,所有的worker都会被唤醒,不过只有一个worker能获取新连接,其它的worker会重新进入阻塞状态,这就是“惊群”现象。 2.3 accept_mutex_delay 500ms 设置队首worker会尝试获取互斥锁的时间间隔。默认值为500毫秒。 2.4 multi_accept on off:系统会逐个拿出新连接按照负载均衡策略,将其分配给当前处理连接个数最少的worker。 on:系统会实时的统计出各个worker当前正在处理的连接个数,然后会按照“缺编”最多的worker的“缺编”数量,一次性将这么多的新连接分配给该worker。 2.5 use epoll 设置worker与客户端连接的处理方式。Nginx会自动选择适合当前系统的最高效的方式。当然,也可以使用use指令明确指定所要使用的连接处理方式。user的取值有以下几种: select | poll | epoll | rtsig | kqueue | /dev/poll 。 A、select | poll | epoll 这是三种多路复用机制。select与poll工作原理几乎相同,而epoll的效率最高,是现在使用最多的一种多路复用机制。 B、rtsig realtime signal,实时信号,Linux 2.2.19+的高效连接处理方式。但在 在Linux 2.6版本后,不再支持该方式。 C、kqueue 应用在BSD系统上的epoll。 D、/dev/poll UNIX系统上使用的poll。 三、http模块下的调优 3.1 非调优属性简介 include mime.types; 将当前目录(conf目录)中的mime.types文件包含进来。 default_type application/octet-stream; 对于无扩展名的文件,默认其为application/octet-stream类型,即Nginx会将其作为一个八进制流文件来处理。 charset utf-8; 设置请求与响应的字符编码。 3.2 sendfile on 设置为on则开启Linux系统的零拷贝机制,否则不启用零拷贝。当然,开启后是否起作用,要看所使用的系统版本。CentOS6及其以上版本支持sendfile零拷贝。 3.3 tcp_nopush on on:以单独的数据包形式发送Nginx的响应头信息,而真正的响应体数据会再以数据包的形式发送,这个数据包中就不再包含响应头信息了。 off:默认值,响应头信息包含在每一个响应体数据包中。 3.4 tcp_nodelay on on:不设置数据发送缓存,即不推迟发送,适合于传输小数据,无需缓存。 off:开启发送缓存。若传输的数据是图片等大数据量文件,则建议设置为off。 3.5 keepalive_timeout 60 设置客户端与Nginx间所建立的长连接的生命超时时间,时间到达,则连接将自动关闭。单位秒。 3.6 keepalive_requests 10000 设置一个长连接最多可以发送的请求数。该值需要在真实环境下测试。 3.7 client_body_timeout 10 设置客户端获取Nginx响应的超时时限,即一个请求从客户端发出到接收到Nginx的响应的最长时间间隔。若超时,则认为本次请求失败。
发表评论
还没有评论,来说两句吧...