PHP 和 DTrace 介紹

PHP 和 DTrace 介紹

包括 Solaris,macOS,Oracle Linux 和 BSD 在內的很多操作系統 都提供了 DTrace 跟蹤除錯框架,它永遠可用,並且額外消耗極低。 DTrace 可以跟蹤操作系統行為和使用者程式的執行情況。 它可以顯示參數值,也可以用來分析效能問題。 使用者可以使用 DTrace D 指令碼語言建立指令碼檔案來監控探針,進而高效分析數據指針。

除非使用者使用 DTrace D 指令碼啟用並監控 PHP 探針,否則它並不會執行,所以不會給正常的應用執行帶來任何效能損耗。 即使 PHP 探針被啟用,它的消耗也是非常低的,甚至可以直接在生產系統中使用。

在執行時可以啟用 PHP 「使用者級靜態定義跟蹤」(USDT)探針。 舉例說明,如果 D 指令碼正在監控 PHP function-entry 探針, 那麼,每當 PHP 指令碼函式被呼叫的時候,這個探針將被觸發,同時 D 指令碼中所關聯的動作程式碼將被執行。 在指令碼的動作程式碼中,可以列印出諸如函式所在原始檔等資訊的探針參數, 也可以記錄諸如函式執行次數這樣的聚合數據。

這裡僅描述了 PHP USDT 探針。請參考各操作系統文件中關於 DTrace 的部分獲取更多資訊, 例如,如何使用 DTrace 跟蹤函式呼叫,如何跟蹤操作系統行為等。 需要注意的是,不同平臺提供的 DTrace 功能並不完全相同。

從 PHP 5.4 開始加入 DTrace 靜態探針,之前的版本需要使用 » PECL 擴充套件來實現跟蹤功能。這個擴充套件現在已經廢棄。

在某些 Linux 發行版中,可以使用 SystemTap 工具來監控 PHP DTrace 靜態探針。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *