Tomcat假死的原因分析及解決方案
Tomcat假死的原因分析及解決
在參與搜人項(xiàng)目時(shí),遇到tomcat假死的問(wèn)題。
當(dāng)時(shí)情況:
1、ps tomcat正在運(yùn)行
2、用netstat 查看8080連接情況,有大量的close-wait,還有一些等待連接的狀態(tài)
3、查看服務(wù)器的使用情況,沒(méi)有過(guò)多的消耗內(nèi)存和CPU
4、重新加載界面,沒(méi)有報(bào)錯(cuò),只是顯示加載失敗
5、加載時(shí)看到tomcat 日志報(bào)錯(cuò) out of memary
在網(wǎng)上查看資料,問(wèn)題得到解決
服務(wù)器配置:linux+tomcat
現(xiàn)象:Linux服務(wù)器沒(méi)有崩,有瀏覽器中訪問(wèn)頁(yè)面,出現(xiàn)無(wú)法訪問(wèn)的情況,沒(méi)有報(bào)4xx或5xx錯(cuò)誤(假死),并且重啟tomcat后,恢復(fù)正常。
原因:tomcat默認(rèn)最大連接數(shù)(線程數(shù))200個(gè),默認(rèn)每一個(gè)連接的生命周期2小時(shí)(7200秒),tomcat使用http 1.1協(xié)議,而http1.1默認(rèn)是長(zhǎng)連接。
tomcat接受處理完請(qǐng)求后,socket沒(méi)有主動(dòng)關(guān)閉,因此如果在2小時(shí)內(nèi),請(qǐng)求數(shù)超過(guò)200個(gè),服務(wù)器就會(huì)出現(xiàn)上述假死現(xiàn)象。
解決方案1
及時(shí)斷開(kāi)socket
解決方案2
修改tomcat配置文件,修改最大連接數(shù)(增大)
修改server.xml配置文件,Connector節(jié)點(diǎn)中增加acceptCount和maxThreads這兩個(gè)屬性的值,并且使acceptCount大于等于maxThreads:
protocol="org.apache.coyote.http11.Http11NioProtocol"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="500" maxThreads="400" />
解決方案3
修改linux的TCP超時(shí)時(shí)間(socket生命周期)限制
vi /etc/sysctl.conf # Decrease the time default value for tcp_fin_timeout connection net.ipv4.tcp_fin_timeout = 30 # Decrease the time default value for tcp_keepalive_time connection net.ipv4.tcp_keepalive_time = 1800 # 探測(cè)次數(shù) net.ipv4.tcp_keepalive_probes=2 # 探測(cè)間隔秒數(shù) net.ipv4.tcp_keepalive_intvl=2 編輯完 /etc/sysctl.conf,要重啟network 才會(huì)生效 [root@temp /]# /etc/rc.d/init.d/network restart
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法
這篇文章主要介紹了Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05Tomcat在linux環(huán)境中開(kāi)機(jī)自啟(定時(shí)重啟)的方法
我們經(jīng)常會(huì)遇到服務(wù)器斷電或異常,而異常后tomcat中部署的web項(xiàng)目需要我手動(dòng)去啟動(dòng),為此,特別貢獻(xiàn)出Linux環(huán)境中Tomcat開(kāi)機(jī)自啟的方式供學(xué)習(xí)使用,需要的朋友可以參考下2023-10-10使用TomCat,service輸出臺(tái)出現(xiàn)亂碼的解決
本文介紹了解決Tomcat服務(wù)輸出臺(tái)中文亂碼問(wèn)題的兩種方法,第一種方法是修改`logging.properties`文件中的`prefix`和`encoding`參數(shù);第二種方法是配置IDEA的VMoptions和文件編碼設(shè)置,通過(guò)這兩種方法,可以有效解決Tomcat服務(wù)輸出臺(tái)出現(xiàn)的亂碼問(wèn)題2025-01-01Tomcat配置虛擬主機(jī)的實(shí)現(xiàn)示例
在Tomcat中配置虛擬主機(jī)允許你通過(guò)不同的域名或IP地址訪問(wèn)同一臺(tái)服務(wù)器上的不同Web應(yīng)用,這通常通過(guò)編輯Tomcat的配置文件server.xml來(lái)實(shí)現(xiàn),本文就來(lái)介紹一下,感興趣的可以了解一下2024-11-11Tomcat之web應(yīng)用的目錄組成結(jié)構(gòu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Tomcat之web應(yīng)用的目錄組成結(jié)構(gòu),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07docker安裝Tomcat 404問(wèn)題的解決方案
這篇文章主要介紹了docker安裝Tomcat 404問(wèn)題的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Tomcat的卸載和重裝的實(shí)現(xiàn)(圖文)
這篇文章主要介紹了Tomcat的卸載和重裝的實(shí)現(xiàn)(圖文),文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08