MySQL Shell 8.4  /  ...  /  collectHighLoadDiagnostics 工具

11.8.2 collectHighLoadDiagnostics 工具

關於此工具

util.debug.collectHighLoadDiagnostics() 會在您的 MySQL 伺服器上執行多次診斷報告迭代,讓您可以在負載下分析伺服器的多個方面。

高負載診斷報告會以 zip 檔案形式產生至本機目錄或指定的路徑。

此工具會產生 TSV 和 YAML 格式的檔案。

需求和限制

下列需求適用於使用診斷收集工具進行匯出

  • 需要 MySQL 5.7 或更新版本。

  • 此工具必須以 root 身分執行。

執行此工具

此診斷工具具有下列簽章

  util.debug.collectHighLoadDiagnostics(path, {options})

下列範例會將 zip 檔案寫入使用者的 temp 目錄,執行 5 次收集迭代,並啟用所有效能結構描述儀器和取用者

      util.debug.collectHighLoadDiagnostics("/home/userName/temp/highLoad.zip", {iterations: 5, pfsInstrumentation: "full"})
注意

此工具傳回的資料也包含 util.debug.collectDiagnostics() 所收集的資料。

收集高負載診斷的選項

iterations: number

預設值為 2。高負載診斷資料收集的迭代次數。

delay: number

預設值為 300 秒。高負載診斷資料收集迭代之間的時間間隔秒數。

innodbMutex: [true | false]

預設值為 false。如果設定為 true,則會收集 SHOW ENGINE INNODB MUTEX 的輸出。

注意

此參數可能會影響效能。

pfsInstrumentation: [current | medium | full]

預設值為 current。定義要使用的效能結構描述儀器和取用者。可能的值為

  • current:目前已啟用的效能結構描述儀器和取用者。不會變更伺服器的組態。

  • medium:啟用除了 %history%history_long 之外的所有取用者,以及除了 wait/synch/% 之外的所有儀器。

  • full:啟用所有取用者和所有儀器。

customSql: array

要執行的一個或多個 SQL 陳述式。您可以使用下列前置詞控制陳述式執行的時間

  • PRE:預設值。此陳述式會在度量收集迭代開始之前執行一次。

  • POST:此陳述式會在度量收集迭代完成之後執行一次。

  • ITER:此陳述式會針對度量收集的每個迭代執行一次。

例如

            {"customSql": ["statement1", "statement2", "statement3"]}
customShell array

要執行的一個或多個 Shell 命令。您可以使用下列前置詞控制命令執行的時間

  • BEFORE:預設值。此陳述式會在度量收集迭代開始之前執行一次。

  • DURING:此陳述式會針對度量收集的每個迭代執行一次。

  • AFTER:此陳述式會在度量收集迭代完成之後執行一次。

例如

            {"customShell": ["command1", "command2", "command3"]}
重要事項

這些命令會以執行 MySQL Shell 的使用者權限執行,應謹慎使用。