今天我们要讲的是Nginx服务器的高性能优化配置,以及如何让Nginx轻松实现10万并发访问。一般来说,一台正常的Nginx Linux服务器可以达到50万–60万次/秒的请求处理性能。如果对
今天我们要讲的是Nginx服务器的高性能优化配置,以及如何让Nginx轻松实现10万并发访问。
一般来说,一台正常的Nginx Linux服务器可以达到50万–60万次/秒的请求处理性能。如果对Nginx服务器进行优化,可以稳定达到904000次/秒的处理性能,大大增加Nginx的并发访问。
这里需要特别说明的是:
1.本文中列出的所有配置都在我的测试环境中得到了验证。您需要根据您的服务器的情况来配置它们。
一、优化思路分析:nginx将有以下两个限制来成功响应请求:
1.nginx接受许多tcp连接。能成立吗?
2.nginx响应流程。要打开很多文件,能打开吗?
所以只要优化以上两个限制,就可以大大提高Nginx的效率。
二、优化步骤我们知道Nginx的工作流程如下图所示:
一、步骤:
1.找到Nginx服务器的瓶颈。
2.优化配置。
3.再应力试验
注意:一定要在配置修改后进行压力测试,这样可以观察哪种配置修改的优化效果最明显。这种有效的测试方法可以节省你很多时间。
二。找出Nginx
的瓶颈
1.打开Apache ab压力测试工具,输入以下命令:a b-n 200000-c 5000 http://localhost:8080/index . html。
2.检查Nginx状态信息
在浏览器中输入nginx的地址:http://127.0.0.1/status,查看nginx的状态信息。
注意连接和等待等参数。以便确定如何优化相关参数。
Nginx状态信息的打开方法这里就不详细描述了。如果不清楚,可以参考我之前的文章,Nginx总结(八)启用Nginx状态和状态参数的详细说明。
第三,优化配置根据以上方法,一般来说,nginx配置文件中以下几项对优化比较有用:
Nginx优化配置项:
1)优化工作进程,cpu
worker_processes 8; // 根据CPU核数配置worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
2)事件处理模型的优化
NGX的连接处理机制是不同的操作系统会采用不同的I/O模型。在Linux下,nginx使用epoll的I/O复用模型,freebsd的kqueue的IO复用模型,solaris的/dev/pool的IO复用模型,windows的icop等。
为了根据不同的系统类型选择不同的事务处理模型,我们使用Centos,因此我们将nginx的事件处理模型调整为epoll模型。
events { worker_connections 10240; // use epoll;}
注意:当没有指定事件处理模型时,nginx会默认自动选择最佳的事件处理模型服务。
3)设置work_connections连接数
worker_connections 10240;
4)每个进程打开文件的最大数量
worker_rlimit_nofile 65535; # 一般等于ulimit -n系统值
5)保活超时会话保持时间
keepalive_timeout 60;
6)GZIP压缩性能优化
gzip on; #表示开启压缩功能gzip_min_length 1k; #表示允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩,建议设置成大于1K。如果小于1K可能会越压越大gzip_buffers 4 32k; #压缩缓存区大小gzip_http_version 1.1; #压缩版本gzip_comp_level 6; #压缩比率, 一般选择4-6,为了性能gzip_types text/css text/xml application/javascript; #指定压缩的类型 gzip_vary on; #vary header支持
7)代理超时设置
proxy_connect_timeout 90;proxy_send_timeout 90;proxy_read_timeout 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k
8)高效的传输模式
sendfile on; # 开启高效文件传输模式。tcp_nopush on; #需要在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量。将响应头和正文的开始部分一起发送,而不一个接一个的发送。
Linux系统内核级别:
要达到nginx的最佳性能,除了优化Nginx服务本身,还需要Nginx服务器上的内核参数。
这些参数被追加到/etc/sysctl.conf中,然后执行sysctl -p才能生效。
1)调整系统同时发起的tcp连接数
net . core . somaxconn = 262144
2)允许等待收听。
net.core.somaxconn = 4096
TCP连接的快速恢复
4) tcp连接重用
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
5)不抵抗洪水袭击。
net.ipv4.tcp_syncookies = 0
net . IP v4 . tcp _ max _ orbonds = 262144 #该参数用于设置系统中不与任何用户文件句柄关联的TCP套接字的最大数量,其主要目的是防止Ddos攻击。
6)文件打开的最大数量
ulimit -n 30000
最后以上介绍了高性能优化的Nginx服务器的配置。你可以按照我提供的方法逐个设置各个参数,看看相关的效果。这些都是一点一点试出来的,这样才能更好的理解每个参数的意义。