Linux入门教程:Nginx配置调优,运维日志如果需要不停的加载资


nginx运行进程个数

worker_processes  4;

表示启动nginx process数. 一般建议设置为cpu核心数或者核心数*2

cpu亲和力

如果cpu为四核心,设置进程数为4

worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000;

如果cpu为八核心,设置进程数为8

worker_processes  8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

此配置项是将nginx每个进程绑定到固定的cpu核心上.不会造成进程频繁地切换cpu而占用更多的资源

nginx打开文件的最大个数

worker_rlimit_nofile 102400;

在修改这个参数之前同时需要修改操作系统限制的最大打开文件数量

ulimit -n       #显示当前系统限制同时打开文件数量
ulimit -n 102400    #临时修改系统限制
vim /etc/security/limits.conf       #修改系统配置文件
* soft nofile 102400
* hard nofile 102400

Nginx事件处理模型

events {
    use epoll;
    worker_connections  10240;
}
use:使用的事件模型,网上表示epoll处理效率高,具体也不是很清楚 worker_connections:单进程的最大可连接数

连接超时时间

tcp在建立连接之时需要进行三次握手,断开时四次挥手。如果需要不停的加载资源,极大的占用了系统资源与时间。
keepalive选项则是连接建立之后,进行一段时间的等待,减少了握手与挥手的时间损耗。
然而长连接却也占用了系统资源,这个选项的参数设置也是需要根据实际情况来调整

keepalive_timeout  65;
tcp_nodelay on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 15;
keepalived_timeout 客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接 tcp_nodelay;也是防止网络阻塞,不过要包涵在keepalived参数才有效 client_header_timeout 客户端请求头读取超市时间,如果超过设个时间没有发送任何数据,nginx将返回request time out的错误 client_body_timeout 客户端求主体超时时间,超过这个时间没有发送任何数据,和上面一样的错误提示 send_timeout 响应客户端超时时间,这个超时时间仅限于两个活动之间的时间,如果超哥这个时间,客户端没有任何活动,nginx关闭连接

上传文件大小限制

http {
    ...
    clinet_max_body_size 10m;
    }

gzip压缩

使用gzip压缩可以给我们节省带宽成本,提高传输速度,但是也会占用cpu资源

nginx需要启用with-http_gzip_static_module才可以使用

gzip on;
gzip_min_length  1k;
gzip_buffers     4 32k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types  text/css text/xml application/javascript;
gzip_vary on;
gzip on; #开启压缩功能 gzip_min_length 1k; #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。 gzip_buffers 4 32k; #压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。 gzip_http_version 1.1; #压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可 gzip_comp_level 9; #压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。 gzip_types text/css text/xml application/javascript; #用来指定压缩的类型,‘text/html’类型总是会被压缩。 gzip_vary on; #vary header支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据

缓存调优

主要是针对图片,css,js这种元素修改机会较少的情况使用。
特别是图片,占用带宽大。

我们列出匹配这些的url

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
      {
      expires      30d;
      }
location ~ .*\.(js|css)?$
      {
      expires      10d;
      }

expires参数表示缓存时间。

相关内容