前言:nginx是一个高效的http和反向代理的web服务器,是实现web应用程序高效的居家必备的产品。但是如果想要把nginx的性能发挥到极致,还是需要进行一些配置。nginx响应的过程大致如下:
由图片可知,瓶颈主要在于2个地方,建立更多的socket连接,打开更多的文件。
服务器篇以linux centos7.2为例
一 提高socket连接数
1.1 socket最大连接数修改
这里的文件是进程文件,正在运行中,所以不能使用vim编辑器进行修改
系统的默认值为128 这里改为50000
echo 50000 > /proc/sys/net/core/somaxconn
1.2 加快系统的tcp回收
tcp 连接断开后还会存活一段时间,系统默认为0 ,这里修改为1
此数值请不要修改
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
1.3 允许空的tcp回收
系统默认为0 , 这里修改为1
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
1.4 关闭系统的洪水抵御防护
正常情况下,当系统收到大量的重复请求时,系统会认为攻击,会在响应头中加入cookie信息,但我们这是高并发请求并不是攻击
系统默认为1 修改为0
echo 0 > /proc/sys/net/ipv4/tcp_syncookie
2 nginx的配置
2.1 修改nginx子进程运行打开的连接数
表示能打开的连接数,默认为1024,修改为10000
events {
worker_connections 10000;
}
二 文件系统方面的优化
1 操作系统方面的优化
把操作系统允许打开文件的最大值设为10240,原本的默认值是1024
ulimit -n 10240;
2 配置nginx子进程可以打开的文件数
work_limit_nofile 10240