国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一般Spring MVC項目問題排查經驗

2019-11-11 00:31:56
字體:
來源:轉載
供稿:網友
開發中總會遇上的這樣那樣的情況 : 這參數怎么沒有傳過來/傳的值不對復制過來的代碼怎么效果不一樣在本地是好的啊怎么上線就掛了,這不科學好吧, 這里就分享一些開發中遇到問題快速定位的小經驗,主要針對基于 SPRing MVC 和 Mybatis的一般Web項目,旨在找出問題所在而非問題的解決方案。

一、 瀏覽器端錯誤,表現為瀏覽器提示錯誤或點擊頁面元素無效

客戶端不能聯網 , 服務器沒有接收到請求瀏覽器解析JS腳本錯誤400 : POST非數組參數同名了 , data -> data[] √ 404 : url錯誤 、 應用掛了解決方案 :瀏覽器F12 -> console || network 搞定

二、中間層錯誤 , 多出現在負載均衡(LBS)錯誤的情況

返回http狀態碼為 502 bad gateway檢查LBS的心跳檢測判斷規則 , 是根據 HTTP 狀態碼判斷機器存活還是其他的。如果是根據HTTP 狀態碼判斷的話就看錯誤的URL返回的 HTTP 狀態碼是否符合判斷規則。比如心跳檢測需要的是200的才通過而服務器返回的是302導致出錯。

三、服務器錯誤 , 表現形式多為 HTTP 500 錯誤,服務器拋異常了

3.1 網絡問題——HTTP / TCP 問題

需要確定流量可到達服務器,大致需要確定三個地方 :ip可達 : ping應用可達 :curl 、 telnet localhost 8080應用啟動成功 : jps 、ps -aux 、 netstat -anpt 、 top可能影響的地方 : nginx反向代理 、 LBS負載均衡 、 應用啟動失敗 、 防火墻配置一次HTTP請求和服務器的交互過程 ,基本分為三部分 :瀏覽器發送HTTP請求 -> 中間層 -> 服務器處理請求并返回結果 , 中間每個環節都可能出錯導致流程無法往下走 。分析代碼中 socket的處理是否用完后進行close了是否設置了各種超時 :connectionTimeout 、socketTimeout 、timeout是否保持了長連接 :socket.setKeepAlive(); 、header中的 connection:close

3.2 代碼問題

一般排查鏈路為 : DEBUG走起 -> 瀏覽器F12查看請求參數 -> 在Controller斷點看請求參數是否正確 -> 斷點分析代碼邏輯 -> done前提 : 確認本地代碼和線上代碼一致根據流程圖初步定位是上面的哪一個階段的出錯 , 根據流量的終點(在哪里不走下去了)判斷即可

分析過程

看日志 : tail -10000 catalina.out | grep 'Xxx'沒有打出異常日志 , 說明代碼沒有走到這里 , 多為多線程程序線程死鎖、阻塞 : 大量線程處理WAITING狀態 : 線程池配置不正確,導致有線程一直占有鎖 , 比較暴力的解決方案就是加大線程池大小系統參數問題 : 內存、磁盤容量不足對文件的處理變量占用內存過大、多為 list、map太大、靜態變量過多、局部變量list的數據量太大打出了異常日志 、比較好排查 , 定位問題代碼逐層往上找

人為誤操作

如果經過上述鏈路還沒找到問題所在則考慮不是自己導致的問題tomcat莫名其妙被干掉了 , 加大內存也不管用 , 也沒留下任何日志解決思路 :history , 查看掛掉之前調用了啥命令 , 特別是 shell 腳本的調用可能誤殺進程 。詢問和自己使用相同服務器環境的同事

常用排查工具:

瀏覽器端 : F12 、 FIRE DEBUG 、 Fiddler 、 HTTP Analyzer 、 Wireshark ,主要看 console 和 network , 基本為 js 和 http request/response開發工具 : 本地/遠程 DEBUGjava : jstack 、 jmap + jhat 、jconsole 、jps 、 jprofiler系統 : top 、 ps -aux 、 df 、 free -m 、 cat 、 tail 、 sed 、 history網絡 : telnet localhost 8080 、ping localhost 、curl 、 netstat
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庐江县| 苍梧县| 清水县| 汝城县| 邛崃市| 隆尧县| 巨鹿县| 康平县| 清涧县| 鞍山市| 广平县| 南岸区| 荔浦县| 炎陵县| 青冈县| 永嘉县| 宁津县| 阿拉善右旗| 泗洪县| 姚安县| 确山县| 镇康县| 县级市| 神木县| 潮州市| 崇信县| 杭锦旗| 无极县| 衡东县| 长海县| 蛟河市| 苗栗市| 海原县| 保亭| 贡觉县| 正蓝旗| 祁连县| 华安县| 扎兰屯市| 璧山县| 乌鲁木齐县|