location /mp3 { tcp_nodelay on; keepalive_timeout 65; #...}优化积压队列
其中一个重要因素是 NGINX 可以多快地处理传入连接 。一般规则是在建立连接时,将其放入侦听套接字的 "listen" (监听)队列中 。在正常负载下,队列很小或根本没有队列 。但是在高负载下,队列会急剧增长,导致性能不均匀,连接中断,延迟增加 。
显示积压队列使用命令 netstat -Lan 来显示当前监听队列 。输出可能如下所示,它显示在端口 80上的监听队列中,有 10 个未接受的连接,这些连接针对配置的最多 128 个排队连接 。这种情况很正常 。
Current listen queue sizes (qlen/incqlen/maxqlen)Listen Local Address 0/0/128 *.12345 10/0/128 *.80 0/0/128 *.8080相反,在以下命令中,未接受的连接数(192)超过了 128 的限制 。当网站流量很大时,这种情况很常见 。要获得最佳性能,需要在操作系统和 NGINX 配置中增加可以排队等待 NGINX 接受的最大连接数 。
Current listen queue sizes (qlen/incqlen/maxqlen)Listen Local Address 0/0/128 *.12345 192/0/128 *.80 0/0/128 *.8080调整操作系统将 net.core.somaxconn 内核参数的值从其默认值(128)增加到足以容纳大量流量的值 。在这个例子中,它增加到 4096 。
- FreeBSD 的命令为 sudo sysctl kern.ipc.somaxconn=4096
- linux 的命令为 1. sudo sysctl -w net.core.somaxconn=4096 2. 将 net.core.somaxconn = 4096 加入到 /etc/sysctl.conf 文件中 。
server { listen 80 backlog=4096; # ...}© 文章翻译自 Nginx Serving Static Content,部分做了语义调整 。
推荐阅读
- linux 虚拟机下安装nginx的步骤教程
- 利用nginx设置浏览器协商缓存
- 电脑文件夹设置密码
- 手机文件多又杂乱?试试这些整理应用吧
- linux下.tar.gz和.gz文件解压详解
- 建议收藏 Nginx的DNS解析详细过程分析
- Linux安装Nginx
- 微信现已支持发送大文件和高清视频 跟压缩说拜拜
- TCP案例:python文件下载器
- 搭建nginx+tomcat+Java的负载均衡环境