記憶體和棧溢位問題定位
記憶體洩露
- 記憶體使用率在90%以上,通過監控工具apm檢視到一臺虛擬機器上應用頻繁在發生了全域性GC(FullGC),導致應用假死,不在接受請求。此時登入虛擬機器
- 記憶體dump
ps -ef | grep appName,獲取程式ID
/usr/local/jdk/bin/jmap -dump:format=b,file=m.hprof pid(程式號) - 使用mat分析dump檔案
參考資料:https://blog.csdn.net/alli0968/article/details/52460008
棧溢位
- 現象:一個後端服務,每天都出現程式死掉。並且部署了該應用的後端服務都發生過程式死掉,通過監控apm發現,每次程式掛掉時間都是凌晨2點。
- 分析:每臺伺服器都發生過,且發生時間都是凌晨2點,說明程式死掉和虛擬機器關係不大,有可能是定時任務。檢視/var/log/message系統日誌,除了看到程式掛掉時間,沒有其他有用日誌。
- 問題定位:ulimit 它是一種簡單並且有效的實現資源限制的方式,修改ulimit值為無限大,用於問題定位。第二天,程式又出現掛掉,檢視/var/log/message系統日誌,看到裡面出現stack over flow即棧溢位,結合發生時間,基本可以確定是定時任務導致。當時定時任務在進行資料歸檔,根據最近幾天歸檔的資料發現都是歸檔完成第42條資料後,程式死掉。應該是第43條資料歸檔出現了問題,模擬現網環境資料,本地執行出現了stack over flow,發現是一個遞迴函式無法退出導致。
相關文章
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- BufferedImage記憶體洩漏和溢位問題記憶體
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- 基礎學習-記憶體溢位問題記憶體溢位
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- JVM執行緒和記憶體溢位問題排查思路JVM執行緒記憶體溢位
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- 記憶體溢位記憶體溢位
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- Java記憶體溢位Java記憶體溢位
- [Java基礎]記憶體洩漏和記憶體溢位Java記憶體溢位
- 揭露 FileSystem 引起的線上 JVM 記憶體溢位問題JVM記憶體溢位
- java記憶體溢位和記憶體洩漏的區別Java記憶體溢位
- 尾遞迴 - 杜絕記憶體洩漏溢位爆棧遞迴記憶體
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- 記一次棧溢位異常問題的排查
- 簡單的記憶體“洩露”和“溢位”記憶體
- JVM面試問題系列:深入詳解JVM 記憶體區域及記憶體溢位分析JVM面試記憶體溢位
- JAVA記憶體區域與記憶體溢位異常Java記憶體溢位
- java向excel 寫入海量資料記憶體溢位問題 解決JavaExcel記憶體溢位
- mybatis-plus getOne 記憶體溢位MyBatis記憶體溢位
- return new物件造成溢位記憶體物件記憶體
- jvm記憶體設定及記憶體溢位、解決方案JVM記憶體溢位
- 解決SqlServer執行指令碼,檔案過大,記憶體溢位問題SQLServer指令碼記憶體溢位
- 記一次記憶體溢位問題的排查、分析過程及解決思路記憶體溢位
- Windbg下使用dump分析記憶體溢位記憶體溢位
- Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)RedisError記憶體溢位
- 關於 PHP 記憶體溢位的思考PHP記憶體溢位
- php記憶體溢位了怎麼辦?PHP記憶體溢位
- Windows Tomcat 記憶體溢位解決方法WindowsTomcat記憶體溢位
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- JVM(2)-Java記憶體區域與記憶體溢位異常JVMJava記憶體溢位
- JVM調優——Java動態編譯過程中的記憶體溢位問題JVMJava編譯記憶體溢位
- 日誌導致jvm記憶體溢位相關問題JVM記憶體溢位
- Executors使用不當引起的記憶體溢位記憶體溢位
- tomcat記憶體溢位:PermGen space解決方法Tomcat記憶體溢位
- vue專案編譯node記憶體溢位Vue編譯記憶體溢位
- 強如 Disruptor 也發生記憶體溢位?記憶體溢位