1)配置线程数和并发数 #############################
worker_processes 4 #cpu(取决于cpu的核数,一般为cpu核数或倍数。也可以配置成auto,让nginx自己选择工作线程数)
events{
worker_connections 10240; #每一个进程打开的最大连接数,包含了nginx与客户端和nginx与upstream之间的连接(受限于操作系统)
multi_accept on; #可以一次建立多个连接
use epoll; # Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率
}
2)配置后端Server的长连接 #############################
upstream server_pool{
server localhost:8080 weight=1 max_fails=2 fail_timeout=30s;
server localhost:8081 weight=1 max_fails=2 fail_timeout=30s;
keepalive 300; #300个长连接
}
location /{
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://server_pool/;
}
3) 启用缓存、压缩。Nginx的缓存还有很大的局限性,下面是静态文件压缩配置 #############################
gzip on;
gzip_disable "msie6";
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
4)其他优化 #############################
sendfile on; #减少文件在应用和内核之间的拷贝
tcp_nopush on; #当数据包达到一定大小再发送
tcp_nodelay off; #有数据随时发送(只用在应答需要非常快速的情况下
注意:测试nginx语法是否正确:nginx -t
5) 操作系统优化 #############################
1. 配置文件/etc/sysctl.conf
sysctl -w net.ipv4.tcp_syncookies=1 #防止一个套接字在有过多试图连接到达时引起过载
sysctl -w net.core.somaxconn=1024 #默认128,连接队列
sysctl -w net.ipv4.tcp_fin_timeout=10 #timewait的超时时间
sysctl -w net.ipv4.tcp_tw_reuse=1 #os直接使用timevait的连接
sysctl -w net.ipv4.tcp_tw_recycle=0 #回收禁用
2. 配置文件/etc/security/limits.conf
hard nofile 204800
soft nofile 204800
soft core unlimited
soft stack 204800
常用的Nginx优化配置
最新推荐文章于 2024-10-01 20:47:03 发布