http长连接与短连接,短连接就是建立完一次链接该链接就释放了。如果服务qps较高,短时间内会创建大量链接,会给系统造成巨大压力。长连接,建立完链接后nginx或者tomcat会缓存下来,下次还有同ip的请求过来继续复用该链接。
如图所示,简略网络架构图。
要完成所有链路的http请求都是些keep-alive功能。就需要在客户端,nginx端,tomcat端做如下配置。
1、客户端主流浏览器默认是http1.1协议,支持长连接。如图所示
在head里边Connection: keep-alive 告诉服务器,我要采用长连接。
2、nginx做如下配置。
参数说明:
keepalive_timeout 长连接超时时间。
keepalive_requests 该链接最大复用次数。
upsteam 模块里边的keepalive。最大空闲数。可以理解为最大连接数,但是nginx不会根据这个设置上限。如果发现nginx创建大量的连接,需要把这个参数调大。这个参数需要跟tomcat里边max-keep-alive-requests保持一致。否则长连接的数量会按照最小值进行创建。
3、tomcat配置。
server:
tomcat:
max-keep-alive-requests: 1000
以上参数是不断调优的过程,需要结合实际情况进行调试。