Tomcat無響應問題定位流程

2021-09-02 20:31:14 字數 1325 閱讀 8665

1、apache 宕機,apache無法連線tomcat,檢視apache的log,errorlog;

2、tomcat宕機,tomcat的連線數不夠可能,也可能tomcat的請求長時間無法返回,看tomcat的localhost.log,不是catalina.out。

3、如果資源檔案很多,每個使用者的請求會導致產生x100個的js和請求,也會消耗tomcat和apache的連線數,如果使用者頻寬慢也會導致連線數不夠,最終導致使用者無法訪問(類似攻擊就是這麼做的,連了而不斷開);

4、tomcat上的乙個請求如果查詢時間長,那麼如果多個人都呼叫此連線,那麼就會導致tomcat的連線數快速耗盡,一般主要的可能性是這個;

5、如果是上述問題,很容易從資料庫的topsql裡面去找到,運維需要經常檢查資料庫是否有長時間執行的sql,如果是前端請求對應的sql,則如果訪問的人多了會迅速吊死整個系統,目前大部分情況都是這樣的;

6、oracle的log上面如果有大量的commit的錯誤,說明寫操作多,資料庫io跟不上,如果沒有則說明只有讀操作,讀的操作oracle不會打log,但是如果客戶端死掉了,則oracle會報錯說客戶度無響應,報錯在tns連線上面。

7、如果有大量的插入和update,delete等操作,需要考慮資料量,比如插入100萬條,那肯定不能每條commit,而是應該批量插入和commit,對於update和delete如果where限制條件寬,那麼會導致大量的rollbock,undo等操作,io會很慢,並且會導致表被鎖死,期間其他的操作都會吊住,這是非常危險的操作,需要進行分批的操作(通過where條件來分批);這些通過em檢查會很容易找到問題;

8、oracle的新建連線時間很長,或者無法建立連線:這個在伺服器端的log上顯示出tns錯誤,如果發生這個情況,要驗證是否dns有問題,是否更換dns可以加快連線速度,如果有關係就證明是dns問題。

9、要每天檢查oracle的alert.log和tnslisenter的tracelog;

10、安裝並且使用oracle的dbconsole,每天看效能和頂級消耗,裡面很容易找到sql相關的問題,包括select和commit問題;

總結

1、需要每天檢視apache的errrorlog,tomcat的localhost log,oracle的alert.log和listener的tracelog,每天檢視oracle的dbconsole;

2、需要調整tomcat的連線數,最好不要用tomcat,而使用glassfish,需要觀察oracle的連線數使用情況(一般oracle的連線數300,是否耗盡)

通過作業系統的netstat檢查資料庫連線數,也可以檢查apache和tomcat的連線,也可以檢查apache和使用者的連線數;

Ajax 長時間無響應問題

最近做索引,在action處理中,如果注釋掉更新索引的方法,ajax則可以正常響應,但是取消注釋,則後台處理完成了,資料庫的資料更新,索引的文件更新都完成後,頁面卻無任何反應,剛開始以為是ajax響應問題,所以網上找到這篇文章,不過,後來發現我的專案中並不是由於這個問題的所在,故不知該文是否是解決該...

Ajax 長時間無響應問題

最近做索引,在action處理中,如果注釋掉更新索引的方法,ajax則可以正常響應,但是取消注釋,則後台處理完成了,資料庫的資料更新,索引的文件更新都完成後,頁面卻無任何反應,剛開始以為是ajax響應問題,所以網上找到這篇文章,不過,後來發現我的專案中並不是由於這個問題的所在,故不知該文是否是解決該...

eclipse啟動無響應問題的解決

由於電腦關機,導致eclipse非正常關閉,之後啟動eclipse發現一直啟動不起來,於是從網上找了一些方法如下 1 刪除檔案.snap 到 metadata plugins org.eclipse.core.resources目錄下刪除 snap的檔案 2 重新命名org.eclipse.core...