2013-04-19

mytop - MySQL 效能監測工具

阿舍租的 VPS 的記憶體,最近都一直出現不夠用的情形,阿舍查了一下,發現,光是 MySQL 就吃掉超過 400 MB 的記憶體,於是,阿舍想先確定一下,到底是因為用量太高才造成記憶體吃掉這麼多,還是,只是單純的設定錯誤哩 ! 因此,阿舍就想找個工具來看看 MySQL 運行的情情,結果,就找到了 mytop 這支程式囉 !

mytop 執行畫面
透過 mytop 提供的功能,系統管理人員就可以看到在 MySQL Server 上,有那些帳號正從那裡來存取那個資料庫和執行什麼指令 (如上圖),所以,系統管理人員就可以依在 mytop 觀察到的情況來分析伺服器的負載情形,同時,也能監測是否有不適當的連結及活動,算是一支功能簡單但很實用的工具哩 !

sudo apt-get install mytop

mytop 的安裝不難,因為 Ubuntu 的 PPA 有放 mytop,所以,用上面這一行的 apt-get 指令就可以安裝到好,而 mytop 的執行也不難,和 MySQL 的命令列 Client 類似,就是要給定 MySQL 的帳號、密碼,如果不給帳號也可以,因為 mytop 預設的帳號就是 root,所以,可以直接用下面這一行的方式來啟用 mytop,而如果不是用 root 的話,就要用下面第二行的方式才行 。

mytop -p

mytop -u 帳號名稱 -p

不過,阿舍的運氣實在不錯,用上面的這一行來執行後,就會出現「Cannot connect to MySQL server. Please check the: ...」的訊息(如下圖),阿舍一開始以為是 mytop 要用的相關 Perl 模組沒裝好 (mytop 是用 Perl 寫的),所以,還去升級和安裝了幾個 Perl 的模組,結果,也是沒什麼用,但是,遇到一堆的問題哩 !

mytop 無法連線的問題
後來,阿舍就再仔仔細細的看了一遍 mytop 的說明,然後,在經過測試了 N 個參數之後,最後,阿舍終於找出方法,是要用「--prompt」選項來讓 mytop 可以輸入密碼才行哩 ! 所以,上面那二行,阿舍就要改成和下面這二行一般,這樣,阿舍才能順利啟動 mytop 哩 !

mytop --prompt

mytop -u 帳號名稱 --prompt

如果不想每次都要輸入帳號和密碼,或是每次只要針對特定的資料庫來做監測的話,就可以利用設定檔的方式來把連線資訊給設定起來,建立設定檔的方式是要在家目錄下建立一個檔名為 .mytop 的檔案,然後,在檔案裡放入下列資訊(後面的中文字請勿放入 .mytop 檔案內)。

user=root    (MySQL 帳號)

pass=       (MySQL 帳號的密碼,留空白的話,也是要用 --prompt 選項才能打密碼)

host=localhost  (MySQL 的所在位址)

db=test     (要監測的 MySQL 資料庫名稱,留白表示要看所有有活動的資料庫)

delay=5     (mytop 多久更新一次)

port=3306    (MySQL 使用的埠號)

socket=  

batchmode=0  

header=1  

color=1  

idle=1 

如果有在家目錄下建立和設定 .mytop 檔案的話,在不給 mytop 任何參數和選項的情況,mytop 就會去讀取 .mytop 檔案的設定值來做為登入的參數哩 ! 而 .mytop 檔案用到的設定值都有相對應的參數和選項可用,透過 mytop 的 man page 就可以查的到的 ...

阿舍利用 mytop 來檢測後發現,其實阿舍的 VPS 上的 MySQL 活動沒有很多哩 ! 也就是說,負載沒有很重,因此,會吃掉這麼多的記憶體,應該是和阿舍的設定有關哩 ! 後來,阿舍調整了一下,果然是這樣的啊 ! OMG ! 所以,mytop 是個不錯用的好工具,能夠讓管理人員方便的觀察 MySQL Server 的使用情形哩!...

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

2 則留言 :

arguskao 提到...

那請問您改了哪裡的設定?也許大家也常會需要的

ayubiz 提到...

Hello,

阿舍是調了阿舍寫的下面這一篇裡,步驟三的設定項目,把這些項目都較調整和測試了一下 (不一定越小越好,調完後,還是要測試看看網站功能和效能正常才行哩 ! ) ...

http://www.arthurtoday.com/2009/11/ubuntu-910-mysql.html



供參 !! ^^=

張貼留言

歡迎留言提問和討論 .... 😁