一、 nginx长连接短连接,可以增强服务器的容灾能力
l 场景:
HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,
减少了建立和关闭连接的消耗和延迟。如果我们使用了nginx去作为反向代理或者负载均衡,从客户端过来的长连接请求就会被转换
成短连接发送给服务器端,为了支持长连接,我们需要在nginx服务器上做一些配置
l 要求:
使用nginx时,想要做到长连接,我们必须做到以下两点:
1:从client到nginx是长连接
2:从nginx到server是长连接
对于客户端而言,nginx其实扮演着server的角色,反之,之于server,nginx就是一个client
l 配置:
# 我们要想做到Client与Nginx之间保持长连接,需要:
1:Client发送过来的请求携带"keep-alive"header。
2:Nginx设置支持keep-alive
二、Nginx状态监控
配置Nginx的监控选项(配置文件路径:nginx.conf)
添加如下代码: #设定Nginx状态访问地址
location /NginxStatus {
stub_status on;
access_log off;
}
配置完成重启Nginx
配置完成后在浏览器中输入http://192.168.1.131/NginxStatus查看
插件安装:./configure --prefix=/opt/nginx/ --with-http_stub_status_modul
参数说明:
活跃的连接数量
active connections
总共处理了n个连接 , 成功创建n次握手, 总共处理了n个请求
server accepts handled requests
每个连接有三种状态waiting、reading、writing
reading —读取客户端的Header信息数.这个操作只是读取头部信息,读取完后马上进入writing状态,因此时间很短
writing — 响应数据到客户端的Header信息数.这个操作不仅读取头部,还要等待服务响应,因此时间比较长。
waiting — 开启keep-alive后等候下一次请求指令的驻留连接.
正常情况下waiting数量是比较多的,并不能说明性能差。反而如果reading+writing数量比较多说明服务并发有问题。
查看Nginx并发进程数:ps -ef|grep nginx | wc -l
查看Web服务器TCP连接状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
解析:
CLOSED //无连接是活动的或正在进行
LISTEN //服务器在等待进入呼叫
SYN_RECV //一个连接请求已经到达,等待确认
SYN_SENT //应用已经开始,打开一个连接
ESTABLISHED //正常数据传输状态/当前并发连接数
FIN_WAIT1 //应用说它已经完成
FIN_WAIT2 //另一边已同意释放
ITMED_WAIT //等待所有分组死掉
CLOSING //两边同时尝试关闭
TIME_WAIT //另一边已初始化一个释放
LAST_ACK //等待所有分组死掉
查看Web服务器TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
高并发下Nginx整合方案