up:: 配置Nginx反向代理

准备:

本节知识点在于Nginx长连接的配置。。。

Nginx中保持长连接的配置 - 运维记录 - 散尽浮华 - 博客园

nginx配置长连接 - 凌度 - 博客园

测试数据库服务器的压力

前面我们测试过数据库的服务压力,复习下发现并发容量问题,我们对数据库服务器进行压力测试,可以看到us的百分量很大,说明服务器处于极大负载之下。。。

这次我们通过了Nginx的反代,增加两台服务器进行1:1的轮询,再次测试下压力!

关于网络中长连接问题

这里前面也讲到过定制化tomcat内嵌开发

先说说服务为什么使用HTTPs长连接技术?比如下面几个原因: 1)对响应时间要求较高; 2)服务走的是公网,客户端与服务端的TCP建立的三次握手和断开的四次挥手都需要40ms左右(真实数据包计算出来的),共需要80ms左右; 3)每个接入方使用的IP就若干个,需要建立的请求连接有限。 4)使用长连接技术,可以大幅减少TCP频繁握手的次数,极大提高响应时间;同时,即使使用长连接技术,也不需要消耗很多的系统资源用来缓存sockets会话信息。

Nginx反向代理时保持长连接          

1)场景描述 HTTP1.1之后,HTTP协议支持持久连接,也就是**长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。**如果我们使用了nginx去作为反向代理或者负载均衡,从客户端过来的长连接请求就会被转换成短连接发送给服务器端。为了支持长连接,我们需要在nginx服务器上做一些配置。

2)要求 当使用 Nginx作为反向代理时,为了支持长连接,需要做到两点:: -  从Client到Nginx的连接是长连接。 -  从Nginx到Server的连接是长连接

从 HTTP 协议的角度看,Nginx在这个过程中,对于客户端它扮演着 HTTP 服务器端的角色。而对于真正的服务器端(在 Nginx的术语中称为 upstream)Nginx又扮演着 HTTP 客户端的角色。也就是说对于Client客户端而言,Nginx其实扮演着Server的角色,反之,之于Server,Nginx就是一个Client。

3)保持和 Client 的长连接 要想做到Client与Nginx之间保持长连接,需要: -  Client发送过来的HTTP请求要求携带”keep-alive”header。 -  Nginx设置支持keepalive

我们的架构图设计

配置keepalive,是Nginx支持长连接

SSH连接一下Nginx反向代理服务器

往nginx服务器进行压力测试,看看与应用服务器之间的进程数:

进入nginx配置文件: vim conf/nginx.conf,前面改过很多次了

保存配置,记得重启,再次压测: