btrace定位生產故障的方法範例
這篇文章主要介紹了btrace定位生產故障的方法範例,文中透過範例程式碼介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
前言
很多時候我們需要知道更多的程式的運作細節,但又不可能在開發的時候就把程式中所有的運作細節都列印到日誌上,通常這個時候能採取的就是修改程式碼,重新部署,然後再觀察,但這種方法對於online應用來說不是很好,另外一方面如果碰到不好改的程式碼,例如引用的其他的外部的包什麼的,就很麻煩了,BTrace就是一個可以在不改代碼、不重啟應用的情況下,動態的查看程序運行細節的工具,下面這篇文章就介紹了btrace定位生產故障的方法,需要的朋友們可以參考借鏡。
現象
某些請求透過資料存取層很慢並導致處理執行緒阻塞,從監控中未能檢查到異常。
寫btrace腳本
@BTrace public class DBProxyTrace { @OnMethod(clazz = "xxx.xxx.QueryHandler", method = "query", location = @Location(Kind.RETURN)) public static void trace2(String sql, @Duration long duration) { if (duration/1000000 > 10 * 1000) { com.sun.btrace.BTraceUtils.println(duration/1000000 + "ms"); com.sun.btrace.BTraceUtils.println("this task executes more than 10s. the sql is : " + sql); com.sun.btrace.BTraceUtils.println("jstack is : "); com.sun.btrace.BTraceUtils.jstack(); } } }
判斷執行大於10秒的sql和堆疊資訊。
編譯腳本DBProxyTrace.Java,確認腳本沒有問題。
./bin/btracec -cp build/ java/DBProxyTrace.java
執行腳本DBProxyTrace.class
./bin/btrace -cp build/ 17342 DBProxyTrace.class
訊息
10468ms this task executes more than 10s. the sql is : rollback jstack is : xxx.QueryHandler.query(QueryHandler.java:106) xxx.net.AbstractConnection.onReadData(AbstractConnection.java:245) xxx.net.NIOReactor$RW.run(NIOReactor.java:77) java.lang.Thread.run(Thread.java:745)
。定位
在交易回滾。
使用jstack進一步定位。
列印JVM堆疊
"$_NIOREACTOR-7-RW" prio=10 tid=0x00007f069856f000 nid=0xde1 waiting for monitor entry [0x00007f0677011000] java.lang.Thread.State: BLOCKED (on object monitor) at Oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:1167) - waiting to lock <0x000000068086fbc0> (a oracle.jdbc.driver.T4CConnection)
#結論
阻塞在了oracle驅動rollback動作,這裡其實是因為oracle驅動為了保證串行請求響應而在底層加了鎖,而這個通道被慢語句塞住了,所以rollback塞了。
總結
以上就是btrace定位生產故障的方法範例的內容,更多相關內容請關注PHP中文網(www.php .cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何在uniapp中使用地圖和定位功能一、背景介紹隨著行動應用的普及和定位技術的快速發展,地圖和定位功能已經成為了現代行動應用中不可缺少的一部分。 uniapp是一種基於Vue.js開發的跨平台應用程式開發框架,可以方便開發者在多個平台上共用程式碼。本文將介紹如何在uniapp中使用地圖和定位功能,並提供具體的程式碼範例。二、使用uniapp-amap元件實現地圖功能

如何使用WordPress外掛實現即時定位功能隨著行動裝置的普及,越來越多的網站開始提供基於地理位置的服務。在WordPress網站中,我們可以透過使用外掛程式來實現即時定位功能,為訪客提供與地理位置相關的服務。一、選擇適合的外掛程式在WordPress外掛程式庫中有很多提供地理位置服務的外掛程式可供選擇。根據需求和要求,選擇適合的插件是實現即時定位功能的關鍵。以下是幾個

1.首先,我們打開手機上的【查找】App,在裝置介面的清單中選擇設備。 2、然後,可以查看位置,也可以點選路線導航過去。

解決Go語言開發中的記憶體洩漏定位問題的方法記憶體洩漏是程式開發中常見的問題之一。在Go語言開發中,由於其自動垃圾回收機制的存在,記憶體洩漏問題相對其他語言可能較少。然而,當我們面對大型複雜的應用程式時,仍然可能會出現記憶體洩漏的情況。本文將介紹一些在Go語言開發中定位和解決記憶體洩漏問題的常用方法。首先,我們需要了解什麼是記憶體洩漏。簡單來說,記憶體洩漏指的是程式中

1.點選進入自己手機的高德地圖軟體。 2、再點選右下角的我的。 3.點擊進入家人地圖。 4、點擊建立我的家人地圖。 5.創建成功後,會出現邀請碼,分享給另外一台手機。

我們大家都是非常清楚的知道他趣APP是一款非常可靠的聊天社交的平台,現在都能夠讓大家好好的進行線上網絡交友,這裡的一些交友的形式,主要都是讓大家進行位置交友的哦,就是這麼的簡單直接,畢竟這裡都能夠自動的為你們定位當前的位置信息,更好的為你們匹配到一些距離相近的同城好友,讓大家都能更加聊得來,都感到特別的開心,那麼很多的一些時候,大家為了想要認識更多一些別的地方的朋友們,都是產生了想要進行地址修改的想法,但是大家不知道該如何修改自己的定位位置的信息,十分困擾,所以本站小編也是收集出來了一些具體

在現今社會,手機已經成為我們生活中不可或缺的一部分。華為手機作為知名的智慧型手機品牌,深受廣大用戶的喜愛。然而,隨著手機的普及和使用頻率的增加,手機遺失的情況也屢有發生。一旦手機遺失,我們往往會感到焦慮和困惑。那麼,如果不幸遺失了華為手機,該如何快速找回手機位置?第一步:使用手機定位功能華為手機內建了強大的定位功能,用戶可以透過手機設定中的「安全」選項進

近日,發現網路上有很多用戶表示使用蘋果手機搜尋或評論「發現石油」相關話題時,設備會自動開啟定位,疑似蘋果手機是在收集、發送位置訊息,監控用戶。 iPhone輸入「發現石油」會觸發定位?這樣蘋果的隱私還能保證嗎?很顯然,這是一個誤會!蘋果客服稱,定位功能預設是開啟的,任何操作都可能觸發更新狀態,而不是僅限於發送特定的文字。但這種說法也不盡然全面,一般情況下iPhone很少會觸發定位功能,除非你在搜尋東西,或是APP機制設定有關,使用者在輸入某些字元時,APP就會自動在背景啟用定位功能。這話題之所以能
