阿里云應用診斷分析平臺(Application Troubleshooting Platform,ATP)是一款分析功能豐富、診斷能力完備的平臺,它可以幫助用戶高效定位應用的性能問題、異常行為、程序崩潰等問題。
Java堆分析
雖然Java擁有高效的垃圾回收機制,開發人員無須顯式地釋放無用對象所占用的空間,但是仍然存在"內存泄露"的情況,且內存問題也是Java開發人員研發過程中遇到最多的問題類型之一。因此需要一款內存分析利器來幫助我們診斷這類問題。Eclipse MAT是一款優秀的Java內存分析工具,被廣泛適用于開發人員的本地環境。但是隨著應用復雜性的增加,許多內存問題往往僅發生在生產環境中,且生產環境中通常配置了較大的堆內存,使得生成的Heap Dump文件通常較大,導致MAT無法派上用場。為了讓我們的開發者,能夠更高效地在線排查生產環境中遇到的Java內存問題,我們研發了Java堆分析功能,它基于MAT的分析庫提供一些常用的分析功能,同時新增各種分析報表,幫助開發者直接通過瀏覽器進行相關的排查工作。
Java線程棧分析
在日常業務開發中,我們經常遇到Java應用導致CPU 100%使用率且居高不下,或者出現應用死鎖、錯誤并發邏輯、無響應等問題,在這些場景中我們可以輸出棧日志。Java線程棧分析對棧日志進行分析,聚合成調用火焰圖,幫助用戶快速定位熱點方法和最深的調用棧。Java線程棧分析提供種類豐富的過濾、查找能力,幫助用戶篩選可疑線程。除此之外,Java線程棧分析還可以根據線程名自動聚合出線程池,幫助用戶快速鎖定可疑線程。
Java GC日志分析
Java的自動內存管理和垃圾回收(Garbage Collection,GC)機制大大提高了業務的開發效率,但是在開發過程中因為垃圾回收而導致的長暫停等問題屢見不鮮,GC日志是我們排查GC相關問題時最重要的日志。GC日志冗長,格式多變,內容繁雜,而且GC本身的理解門檻較高,需要一款好用的工具來幫助我們分析GC日志以排查問題。Java GC日志分析通過對GC日志進行分析,幫助用戶找出日志中潛在的GC問題以及可能引發問題的GC,從暫停時間,對象統計,GC原因等多個維度進行分析,協助問題的排查。除此之外,Java GC日志分析還提供了豐富的GC性能指標,幫助用戶評估GC性能,指導JVM參數的調整,改善應用整體運行狀態。
差異分析
有時我們需要對比查看多份分析結果,比如查看應用一小時時間間隔的兩份分析結果,以此來判斷應用某些指標的變化趨勢,并進一步做故障排查,針對這種需求,我們提供了差異分析,它將兩次分析結果一起呈現,方便用戶對比。差異分析并非新功能,它依賴其他分析能力,只是對分析結果的重新組合、呈現。