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)
重启系统后即可使得内核生效
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查看。
[root@centos7 nginx-1.8.1]# cat /proc/sys/fs/file-max
95094
2、 效率提升,Epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,Epoll的效率就会远远高于select和poll。
3、 内存拷贝,Epoll在这点上使用了“共享内存”,这个内存拷贝也省略了
单个进程允许客户端最大并发连接数 worker_connections 102400;
这个数值一般根据服务器性能和内存来制定,也就是单个进程最大连接数,实际最大并发值就是work进程数乘以这个数。
也就是说,这一项和实际内存大小有关,如果内存使用满了,请将该值调低或者给服务器增加内存。
开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
tcp_nopush on; 必须在sendfile开启模式才有效,防止网络阻塞,积极的减少网络报文段的数量
默认sendfile是开启的,注意:如果图片显示不正常把这个改成off。
缓存功能的启用
缓存,主要针对于图片,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)
文件上传大小限制,在http字段内添加如下内容
http {
……
client_max_body_size 10m;#比如,要求用户上传照片,这个可以限制一下大小,但需要根据实际情况。这里设置的是10M大小