今天發(fā)現(xiàn)weblogic上有大量的連接處于time_wait狀態(tài),感覺很奇怪。據(jù)說是nginx照成的,用tcpdump研究下。
在nginx的服務(wù)器上執(zhí)行
tcpdump -i bond0 -nnA src host 134.96.129.36 and dst host
134.96.129.71 | grep -30 134.96.111.86
可以看到nginx在把請求轉(zhuǎn)發(fā)到后臺weblogic上時候是發(fā)送的http頭信息中指定使用HTTP/1.0和Connection:close。從這個Connection屬性可以知道,nginx讓后端weblogic在請求完成后(及響應(yīng)請求后),直接關(guān)閉連接。及weblogic做的主動關(guān)閉,所以主動關(guān)閉的一方會有大量的time_wait。----http短連接
在瀏覽器訪問,看以看到只要weblogic請求完畢就關(guān)閉與nginx的連接,然后進(jìn)入time_wait狀態(tài),time_wait的時間是60秒。

請求轉(zhuǎn)碼
json={"param":null,"target":"Version"}
-------------------------------------------------------------------------------------------
在nginx的配置中有一個屬性指定瀏覽器發(fā)起的連接與nginx保持keepalive的時間
-----http長連接
下面驗證該配置是否有用

設(shè)置keepalive_timeout屬性為30秒
在nginx服務(wù)器上重復(fù)執(zhí)行如下命令,監(jiān)聽來自ip為85的瀏覽器請求
netstat -nto | grep 134.96.111.85 | grep 8010 >> abc.txt
&& date >> abc.txt
此時在瀏覽器發(fā)送請求該
第一次瀏覽器求情的時間是19:41:48

斷開連接的時間是19:42:17

established的時間是12+17=29秒。其實第一瀏覽器的請求時間應(yīng)該往前的。我統(tǒng)計的不準(zhǔn),執(zhí)行netstat時候晚了,所以剛好實際那應(yīng)該就是30秒。
---------------------------------------------------------------------------------------------
還可以做下測試,只要在瀏覽器重復(fù)請求web頁面,可以發(fā)現(xiàn)瀏覽器與nginx的連接會被重用,這個可以通過
established連接持續(xù)的時間可以看出來。---------------這就是所謂的http長連接了
|