nginx后端应用服务器有大量的tcp连接处于time_wait

2018-12-07 22:21:07
今天发现weblogic上有大量的连接处于time_wait状态,感觉很奇怪。据说是nginx照成的,用tcpdump研究下。

在nginx的服务器上执行

tcpdump -i bond0 -nnA src host 134.96.129.36 and dst host 134.96.129.71 | grep -30 134.96.111.86

nginx后端应用服务器有大量的tcp连接处于time_wait

可以看到nginx在把请求转发到后台weblogic上时候是发送的http头信息中指定使用HTTP/1.0和Connection:close。从这个Connection属性可以知道,nginx让后端weblogic在请求完成后(及响应请求后),直接关闭连接。及weblogic做的主动关闭,所以主动关闭的一方会有大量的time_wait。----http短连接

在浏览器访问,看以看到只要weblogic请求完毕就关闭与nginx的连接,然后进入time_wait状态,time_wait的时间是60秒。

nginx后端应用服务器有大量的tcp连接处于time_wait
请求转码

json={"param":null,"target":"Version"}

-------------------------------------------------------------------------------------------

在nginx的配置中有一个属性指定浏览器发起的连接与nginx保持keepalive的时间 -----http长连接

下面验证该配置是否有用

nginx后端应用服务器有大量的tcp连接处于time_wait
设置keepalive_timeout属性为30秒

在nginx服务器上重复执行如下命令,监听来自ip为85的浏览器请求

netstat -nto | grep 134.96.111.85 | grep 8010 >> abc.txt && date >> abc.txt

此时在浏览器发送请求该

第一次浏览器求情的时间是19:41:48

nginx后端应用服务器有大量的tcp连接处于time_wait
断开连接的时间是19:42:17

nginx后端应用服务器有大量的tcp连接处于time_wait
established的时间是12+17=29秒。其实第一浏览器的请求时间应该往前的。我统计的不准,执行netstat时候晚了,所以刚好实际那应该就是30秒。

---------------------------------------------------------------------------------------------

还可以做下测试,只要在浏览器重复请求web页面,可以发现浏览器与nginx的连接会被重用,这个可以通过

established连接持续的时间可以看出来。---------------这就是所谓的http长连接了

  • 2018-10-21 22:29:24

    android ScollView 嵌套 WebView 底部空白,高度无法自适应解决

    最近要做一个页面,需要 ScrollView 嵌套 WebView,怎么嵌套,怎么解决焦点和 touch 事件冲突,网上一大堆,这里就不赘述了,但是发现 WebView 从一个高度很高的网页加载一个高度很低的网页的时候,高度无法自适应了,造成底部会有一大片的空白,解决方案找到了挺多,描述一下:

  • 2018-10-24 15:24:54

    getcachedir和getexternalcachedir的区别

    应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。 大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。 这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。 如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?

  • 2018-10-25 11:05:16

    SimpleDateFormat转换时间,12,24时间格式

    在使用SimpleDateFormat时格式化时间的 yyyy.MM.dd 为年月日而如果希望格式化时间为12小时制的,则使用hh:mm:ss 如果希望格式化时间为24小时制的,则使用HH:mm:ss