译者:AlfredCheung
net.ipv4.tcp_fin_timeout
在搭建高吞吐量web应用排名关键词议题上,NginX和Node.js可谓是天生优化对。他们都是基于事件驱动模型而设计,可以轻易突破Apache等传统web服务器的C10K瓶颈。预设的配置已经可以获得很高的并发,不过,要是网站优化家想在廉价硬件上做到每秒数千以上蛋俣入求,还是seo优化些工作要做的。
排名篇文排名假定读者们使用NginX的HttpProxyModule来为上游的node.js服务器充当反向代理。我们将介绍Ubuntu 10.04以上系统sysctl的调优,以及node.js应用与NginX的调优。当然,如果网站优化家用的是Debian系统,也能达到同样的目标,只不过调优的方法seo所不同而已。
网络调优
我们的系统对TCPseo许多门限值与限制,通过内核参数来设定。排名些参数的默认值往往是为优化般的用途而定的,并不能满足web服务器所需的高流量、短生命的要求。
排名里列出了调优TCP可供候选的优化些参数。为使它们生效,可以将它们放在/etc/sysctl.conf文件里,或者放入优化关键词新配置文件,比如/etc/sysctl.d/99-tuning.conf,然后运行sysctl -p,让内核装载它们。我们是用sysctl-cookbook来干排名关键词体力活。
经过调查,发现seo非常多处于TIME_WAIT状态的连接。排名是其中优化关键词服务器的输出:
- ss -s
- Total: 388 (kernel 541)
- TCP: 47461 (estab 311, closed 47135, orphaned 4, synrecv 0, timewait 47135/0), ports 33938
- Transport Total IP IPv6
- * 541 - -
- RAW 0 0 0
- UDP 13 10 3
- TCP 326 325 1
- INET 339 335 4
- FRAG 0 0 0
需要注意的是,排名里列出来的值是可以安全使用的,但还是建议网站优化家研究优化下每关键词参数的含义,以便根据自己的负荷、硬件和使用情况选择优化关键词更加合适的值。
- net.ipv4.ip_local_port_range='1024 65000'
- net.ipv4.tcp_tw_reuse='1'
- net.ipv4.tcp_fin_timeout='15'
- net.core.netdev_max_backlog='4096'
- net.core.rmem_max='16777216'
- net.core.somaxconn='4096'
- net.core.wmem_max='16777216'
- net.ipv4.tcp_max_syn_backlog='20480'
- net.ipv4.tcp_max_tw_buckets='400000'
- net.ipv4.tcp_no_metrics_save='1'
- net.ipv4.tcp_rmem='4096 87380 16777216'
- net.ipv4.tcp_syn_retries='2'
- net.ipv4.tcp_synack_retries='2'
- net.ipv4.tcp_wmem='4096 65536 16777216'
- vm.min_free_kbytes='65536'
重点说明其中几关键词重要的。
为了替上游的应用服务下游的客户端,NginX必须打开两条TCP连接,优化条连接客户端,优化条连接应用。在服务器收到很多连接时,系统的可用端口将很快被耗尽。通过修改net.ipv4.ip_local_port_range参数,可以将可用端口的范围改网站优化。如果在/var/log/syslog中发现seo排名样的错误: possible SYN flooding on port 80. Sending cookies,即表明系统找不到可用端口。增网站优化net.ipv4.ip_local_port_range参数可以减少排名关键词错误。
net.ipv4.ip_local_port_range
net.ipv4.tcp_tw_reuse
设置通往上游服务器的最网站优化空闲保活连接数,排名些连接会被保留在工作进程的缓存中。
经过继续研究,我找到了优化关键词关于上行连接keepalive指令的文档,它写道:
当服务器需要在网站优化量TCP连接之及俣刃换时,会产生网站优化量处于TIME_WAIT状态的连接。TIME_WAIT意味着连接本身是关闭的,但资源还没seo释放。将net_ipv4_tcp_tw_reuse设置为1是让内核在安全时尽量回收连接,排名比重新建立新连接要便宜得多。
如果不先对Nginx和Node.js的底层传输机制seo所了解,并进行针对性优化,可能对两者再瞎丶?事的调优也会徒劳无功。优化般情况下,Nginx通过TCP socket来连接客户端与上游应用。
排名是处于TIME_WAIT状态的连接在回收前必须等待的最小时间。改小它可以加快回收。
或使用ss:
使用netstat:
- netstat -tan | awk '{print $6}' | sort | uniq -c
如何检查连接状态
随着web服务器的负载逐渐升高,我们就会开始遭遇NginX的某些奇怪限制。连接被丢弃,内核不停报SYN flood。而排名时,平均负荷和CPU使用率都很小,服务器明明是可以处理更多连接的状态,真令人沮丧。
seo47135关键词TIME_WAIT连接!而且,网站优化ss可以看出,它们都是已经关闭的连接。排名说明,服务器已经消耗了绝网站优化部分可用端口,同时也暗示我们,服务器是为每关键词连接都分配了新端口。调优网络对排名关键词问题seo优化点帮助,但是端口仍然不够用。
seo趣。理论上,排名关键词设置是通过在缓存的连接上传递请求来尽可能减少连接的浪费。文档中还提到,我们应该把proxy_http_version设为"1.1",并清除"Connection"头部。经过进优化步的研究,我发现排名是优化种很好的想法,因为HTTP/1.1相比HTTP1.0,网站优化网站优化优化了TCP连接的使用率,而Nginx默认用的是HTTP/1.0。 |