客戶(hù)端與服務(wù)端保持長(zhǎng)連接 http長(zhǎng)連接會(huì)保持多久?
http長(zhǎng)連接會(huì)保持多久?默認(rèn)情況下,Tomcat似乎是200秒。首先,需要注意的是,http1.0及以下版本沒(méi)有長(zhǎng)期連接,它們將在請(qǐng)求完成后斷開(kāi)連接。1.1及以上版本取決于服務(wù)器的具體配置。通常,默
http長(zhǎng)連接會(huì)保持多久?
默認(rèn)情況下,Tomcat似乎是200秒。首先,需要注意的是,http1.0及以下版本沒(méi)有長(zhǎng)期連接,它們將在請(qǐng)求完成后斷開(kāi)連接。1.1及以上版本取決于服務(wù)器的具體配置。通常,默認(rèn)情況下,長(zhǎng)期連接的數(shù)量是有限的。例如,tomcat似乎被限制為100個(gè),因?yàn)楸3珠L(zhǎng)鏈接意味著消耗系統(tǒng)資源。此外,同一長(zhǎng)連接的最大請(qǐng)求數(shù)也受到限制。例如,常用的前端負(fù)載平衡服務(wù)器nginx限制為100個(gè)請(qǐng)求。如果超過(guò)100個(gè)請(qǐng)求,它將發(fā)送RST斷開(kāi)連接并要求您重新連接。
Http的長(zhǎng)連接能持續(xù)多久?
長(zhǎng)連接過(guò)期時(shí)間
客戶(hù)端的長(zhǎng)連接不能無(wú)限期保留。將有一個(gè)超時(shí)時(shí)間。有時(shí)服務(wù)器會(huì)告訴客戶(hù)端超時(shí)時(shí)間,例如:上圖中的keep alive:timeout=20表示TCP通道可以持續(xù)20秒。此外,可能存在max=XXX,這意味著在接收最多XXX個(gè)請(qǐng)求之后,長(zhǎng)連接將被斷開(kāi)。對(duì)于客戶(hù)機(jī)來(lái)說(shuō),如果服務(wù)器沒(méi)有告訴客戶(hù)機(jī)超時(shí),那也沒(méi)關(guān)系。服務(wù)器可以發(fā)起四次握手以斷開(kāi)TCP連接,并且客戶(hù)端可以知道TCP連接無(wú)效。此外,TCP還有心跳數(shù)據(jù)包來(lái)檢測(cè)當(dāng)前連接是否仍然有效。有許多方法可以避免浪費(fèi)資源。
如何實(shí)現(xiàn)java http長(zhǎng)連接推送數(shù)據(jù)?
Feign可以使用最新的HTTP組件優(yōu)化此問(wèn)題。默認(rèn)情況下,feign使用JDK本機(jī)urlconnection發(fā)送HTTP請(qǐng)求。沒(méi)有連接池,但它將為每個(gè)地址維護(hù)一個(gè)長(zhǎng)連接,即使用HTTP持久性連接。我們可以使用Apache的HTTP客戶(hù)端來(lái)代替feign原來(lái)的HTTP客戶(hù)端,從而獲得連接池、超時(shí)等性能相關(guān)的控制功能。春天的云Brixtion.SR5型版本開(kāi)始支持此替換。首先,在項(xiàng)目中聲明apachehttp客戶(hù)機(jī)和假httpclient依賴(lài)關(guān)系