NGINX调优系列--有效提升nginx性能的几个优化(2)

         NGINX调优系列--有效提升nginx性能的几个优化(2)

(1).Nginx最多可以打开文件数

worker_rlimit_nofile 102400;

这个数值和 系统内设定值 ulimite -n 应该保持一致。

编辑/etc/security/limits.conf,在文档末尾添加如下内容:

* soft nofile 102400 # open files (-n)

* hard nofile 102400

* soft nproc 102400

* hard nproc 102400 # max user processes (-u)

重启系统后即可使得内核生效

 

(2).

nginx的主配置文件内有一个事件标签

events {#事件的意思
    use epoll #事件驱动使用epoll,全称应该为extra poll,epoll主要是负责读写操作的模式,也就是i/o。
    worker_connections  102400;
单个进程允许客户端最大并发连接数
}
 

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。

Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术。

epoll优势:

1、Epoll没有最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于2048, 一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max查看。

[[email protected] nginx-1.8.1]# cat /proc/sys/fs/file-max

95094

2、 效率提升,Epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,Epoll的效率就会远远高于select和poll。

3、 内存拷贝,Epoll在这点上使用了“共享内存”,这个内存拷贝也省略了

(3)

单个进程允许客户端最大并发连接数     worker_connections  102400;  

这个数值一般根据服务器性能和内存来制定,也就是单个进程最大连接数,实际最大并发值就是work进程数乘以这个数。

也就是说,这一项和实际内存大小有关,如果内存使用满了,请将该值调低或者给服务器增加内存。

(4),

NGINX调优系列--有效提升nginx性能的几个优化(2)

开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。

 tcp_nopush on;                  必须在sendfile开启模式才有效,防止网络阻塞,积极的减少网络报文段的数量

默认sendfile是开启的,注意:如果图片显示不正常把这个改成off。

(5),

缓存功能的启用

 

缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天,这样用户第一次打开加载慢一点,第二次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来!

expires缓存配置在server字段里面location内,

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$#正则定义,这里表示网站根目录下的gif,jpg等图片格式的文件

      {

      expires      365d; #缓存一年

      }

location ~ .*\.(js|css)?$#不常更改的页面格式文件,js,css这样的文件

      {

      expires      30d;

      }

 

同时也可以对目录及其进行判断:

location ~ ^/(images|javascript|js|css|flash|media|static)/

      expires 360d;

      }

location ~(robots.txt) {#爬虫说明文件

      expires 7d;

      break;

      }

expire功能优点

(1)expires可以降低网站购买的带宽,节约成本

(2)同时提升用户访问体验

(3)减轻服务的压力,节约服务器成本,甚至可以节约人力成本,是web服务非常重要的功能。

expire功能缺点:

被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。

解决办法:

第一个 缩短缓存时间,例如:1天,不彻底,除非更新频率大于1天

第二个 对缓存的对象改名

a.图片,附件一般不会被用户修改,如果用户修改了,实际上也是更改文件名重新传了而已

b.网站升级对于js,css元素,一般可以改名,把css,js,推送到CDN。

网站不希望被缓存的内容

1)广告图片

2)网站流量统计工具

3)更新频繁的文件(google的logo)

(6)

文件上传大小限制,在http字段内添加如下内容

http {

……

client_max_body_size 10m;#比如,要求用户上传照片,这个可以限制一下大小,但需要根据实际情况。这里设置的是10M大小