首頁>技術>

安裝

和一般的golang工具一樣,ps-top安裝很簡單,直接用go get就可以下載、編譯,安裝好:

go get -u github.com/sjmudd/ps-top/cmd/ps-top或go get -u github.com/sjmudd/ps-top/cmd/ps-stats

這樣就會直接安裝下載工具及其依賴項,安裝後的二進位制檔案在$GOPATH/bin/目錄。如果該路徑在系統PATH設定中,則無需指定任何特定路徑即可直接執行程式。

訪問MySQL

可以透過以下方法之一訪問MySQL:

預設使用檔案~/.my.cnf。

制定cnf檔案,透過--defaults-file=/path/to/.my.cnf。

使用--host=somehost --port=999 --user=someuser --password=somepass連線到主機

透過本機socket連線 --socket=/path/to/mysql.sock --user=someuser --password=somepass

如果未指定,則使用者預設為的內容$USER。如果未指定埠,則預設為3306。

可以透過命令列選項--use-environment ps-top或者ps-stats,則在環境變數中查詢MYSQL_DSN的賬號資訊去連線Mysql。MYSQL_DSN格式為式:user:pass@tcp(host:port)/performance_schema

這樣就避免在命令列中直接顯示賬號和密碼,防止資訊洩露。

MySQL/MariaDB配置

performance_schema資料庫必須配置為支援ps-top。預設情況下,在MySQL上會啟用此功能。MariaDB> = 10.0.12上則禁用此功能。因此,需額外配置啟用,在/etc/my.cnf中,設定:

performance_schema = 1

然後重新啟動MariaDB才能生效。

ps-top和ps-stats需要問performance_schema表的SELECT許可權。如果無法訪問所需表,它們將不會執行。

setup_instruments:檢視mutex_latency或stages_latency 根據需要修改改配置,保證使用者有許可權執行此操作。如果伺服器,--read-only或者沒有足夠的許可權來更改這些表,則這些檢視可能為空。如果在啟動時成功更新了表,則停止ps-top之前,該setup_instruments配置會將其恢復為原始設定。

檢視

ps-top和ps-stats可以顯示7個不同的資料檢視,這些檢視預設情況下每秒更新一次。這7個檢視為:

table_latency:表等待執行操作的時間顯示活動。

table_ops:按MySQL執行的活動數顯示活動。

file_io_latency:顯示MySQL在檔案I/O上花費的時間。

table_lock_latency:根據表鎖顯示順序

user_latency:根據使用者執行查詢的時間或使用者與MySQL的連線數顯示排序。它提供了一些資訊,還顯示了總的空閒時間,因為這表明可能有過長的空閒查詢,如果有堆積,這裡的值之和可能很有趣。

mutex_latency:按互斥鎖延遲顯示排序。

SQL Stages_latency:在不同的SQL查詢階段中按時間顯示排序。

可以更改輪詢間隔並在模式之間進行切換。

快捷鍵

在ps-top模式下,以下按鍵可以讓ps-top在不同模式瀏覽或更改其行為。

h ?:顯示幫助。

· 將輪詢間隔減少1秒(最少1秒)

+ 將輪詢間隔增加1秒

q-退出

t:在顯示自重置ps-top開始以來顯示統計資訊或您顯式重置它們(使用'z')[REL]或顯示從MySQL收集的統計資訊之間切換[ABS]。

z:重置統計資訊。那就是您看到的與"重置"統計資訊有關的計數器。

<TAB>:更改顯示模式:延遲,操作,檔案I/O,鎖定,使用者,互斥,階段和儲存模式。

左箭頭:切換到上一個螢幕

向右箭頭:切換至下一個螢幕

標準輸出模式

ps-stats和,ps-top都具有與相同的檢視輸出,會定時傳送到stdout。預設檢視為table_io_latency。可以使用與vmstat相同的方法來調整收集間隔和收集資料的次數。第一個引數是delay(預設為1秒),第二個引數是要進行的迭代次數,如果未提供,則為一直執行。該模式旨在用於使用stdout作為輸出媒體來監視ps-top並從中收集資料。

相關的命令列選項包括:

--count=<count> 限制迭代次數(預設值:永久執行)

--interval=<seconds> 設定預設輪詢間隔(以秒為單位)

--limit=<rows> 限制輸出的行數(不包括標題)

--stdout 將輸出傳送到stdout(不是螢幕)

--view=<view> 確定要在ps-時檢視的檢視頂部開始(預設:table_io_latency)可能的值:table_io_latency,table_io_ops,file_io_latency,table_lock_latency, user_latency,mutex_latency和stages_latency。

--totals 僅顯示總計行,而不顯示明細。

總結:

本文我們介紹了一個golang撰寫的命令列工具,用來以top形式方式很方便的獲取Myql的一些執行狀態,適合廣大運維和DBA作為一個稱手的工具,大家也可以作為golang語言學習範例專案。

15
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 一文教你搞懂C語言的Q格式使用