入門:執行緒瓶頸偵測

競用和死結之類的執行緒瓶頸可能使應用程式變慢或中止。 「側寫和記載」視景包括一些視圖來幫助您偵測並解決這些執行緒問題。

下列視圖可用於偵測執行緒瓶頸︰

您也可以使用您在 Probekit 中設計的自訂探針來探索執行緒瓶頸。

上層主題: 開始使用執行時期問題判斷

收集偵測執行緒瓶頸的資料

必備條件:

收集資料:
  1. 在「側寫」對話框的「側寫」標籤中,選取執行緒分析側寫集。
  2. 按一下側寫以啟動應用程式。
  3. 執行您認為有遭受執行緒瓶頸的應用程式部分。執行緒資料會被收集並記錄於「執行緒分析」側寫資源中,而「側寫導覽器」會顯示這項資源。現在,您可以終止您的應用程式。

使用「執行緒視圖」和「UML2 序列圖」視圖進行執行緒瓶頸偵測。

執行緒視圖會顯示應用程式所有執行緒的執行緒執行歷程,且會明確指出死結和競用狀況。在側寫執行期間,「UML2 物件互動作業」視圖會顯示呼叫順序。

偵測執行緒瓶頸:
  1. 顯示「執行緒視圖」:用滑鼠右鍵按一下您收集的資料的側寫資源,然後從蹦現功能表選取開啟工具 > 執行緒視圖
  2. 在執行緒視圖中,尋找在執行緒之間的垂直箭頭 指示鎖定要求的箭頭。箭頭從要求鎖定的執行緒指向保留鎖定的執行緒。單一箭頭指出執行緒競用︰一個執行緒等待另一個執行緒釋放鎖定。多個箭頭如果顯示循環鎖定要求型樣則表示有死結,在這種情況下,執行緒會彼此阻止執行,因為彼此都在等待釋放鎖定。
  3. 識別在發生瓶頸時被呼叫的方法。 如果要識別方法,請執行下列步驟:
    1. 尋找執行緒等待的鎖定名稱。在「執行緒視圖」中,將游標暫停在執行緒等待鎖定的位置上。 鎖定的名稱以及保留鎖定的鎖定執行緒名稱會顯示在工具要訣之中。
    2. 用滑鼠右鍵按一下「執行緒分析」側寫資源,從蹦現功能表中選取開啟工具 > UML2 物件互動作業
    3. 在「執行緒視圖」的執行緒清單中,選取要調查之保留鎖定的執行緒。 「UML2 物件互動作業」視圖顯示選取執行緒的物件互動作業,包括鎖定和鎖定的要求。
    4. 將「現行時間」指示器放在欲調查之要求的箭頭上。這會同步處理「UML2 物件互動作業」視圖和側寫監視器中的「呼叫堆疊」側寫資源。 「現行時間」指示器預設是位於「執行緒視圖」圖形左邊緣。 若要移動它,請用滑鼠抓取它。
  4. 顯示負責保留鎖定的程式碼(如果有提供)。如果要執行這個動作,請用滑鼠右鍵按一下保留鎖定執行緒之「呼叫堆疊」中最近的呼叫,然後從蹦現功能表中選取開啟程式碼 只有您是側寫目前已在 Java 視景中開啟的 Java™ 專案時,才會提供程式碼。您現在可以變更程式碼以解決瓶頸。
  5. 重新側寫您的應用程式,驗證已經解決瓶頸。

如需詳細資訊,請參閱偵測執行緒瓶頸

使用「執行流程」及「執行流程表」視圖

這些視圖會用不同的格式來顯示執行緒視圖的基礎原始資料。

使用這些視圖:
  1. 如果要顯示「執行流程」或「執行流程表」視圖,請選取視窗 > 顯示視圖 > 其他 . . .; 在「顯示視圖」對話框中展開側寫和記載項目,然後選取要顯示的視圖。
  2. 在「執行流程」和「執行流程表」視圖中,您可以從蹦現功能表中選取補償時間來扣除側寫的耗時。

Terms of use | Feedback
(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved.