MySQL監控專案指標值解釋和說明

chenfeng發表於2017-04-28
監控專案
MYSQL.QPS
MYSQL.TPS
MYSQL.READS
MYSQL.WRITES
MYSQL.RWRATIO
MYSQL.KEY_BUFFER_READ_HITS
MYSQL.KEY_BUFFER_WRITE_HITS
MYSQL.QUERY_CACHE_HITS
MYSQL.INNODB_BUFFER_READ_HITS
MYSQL.THREAD_CACHE_HITS 保留
MYSQL.SLOW_QUERIES_PER_SECOND
MYSQL.TEMP_TABLES_TO_DISK_RATIO
MYSQL.TMP_DISK_TABLES_PER_SECOND
MYSQL.SELECT_FULL_JOIN
MYSQL.SELECT_FULL_JOIN_IN_ALL_SELECT
MYSQL.CONNECTIONS  
MYSQL.CONNECTION_TIME
MYSQL.INNODB_ROW_LOCK_CURRENT_WAITS
MYSQL.PROCESS_OF_MYSQLD
MYSQL.HA_STATUS
MYSQL.SLAVE_STATUS
MYSQL.TCP_COUNT
MYSQL.TCP_AVG
MYSQL.TCP_MAX
MYSQL.SLAVE_DELAYS


一.MYSQL.QPS
定義:QPS 實際上是指 MySQL Server過去10秒平均每秒執行的 Query總量(包括show .select,set names,set global 等等);
計算公式:QPS=questions(當前值)-questions(10秒前的值)/10
是否保留:是
報警閥值:視各個業務情況(主要是query的複雜度)及伺服器配置設定.大部分設定為10000.
報警型別:大於10000 嚴重.大於12000 災難


二.MYSQL.TPS
定義:TPS指每秒向mysql sever提交的修改(包含update.insert.delete.replace);
老的計算方式:
T1=Handler_commit+Handler_rollback  (均為當前值)
T2= Handler _commit+ Handler _rollback  (均為10s之前值)
TPS=T1-T2/10
新的計算方式:
T1= Com_insert+ Com_replace+Com_delete+Com_update  (均為當前值)
T2= Com_insert+ Com_replace+Com_delete+Com_update  (均為10s之前值)
TPS=T1-T2/10
是否保留:是
報警閥值:視各個業務情況及伺服器配置設定.大部分設定為4000.
報警型別:大於4000嚴重.大於6000 災難


三.MYSQL.READS
定義:READS指每秒向msyql sever提交的讀請求次數(僅指select);
計算公式:
R1=com_select+ qcache_hits  (均為當前值)
R2=com_select+ qcache_hits  (均為10秒前的值)
READS=R1-R2/10
是否保留:是
報警閥值:


四.MYSQL.WRITES
定義:WRITERS 指每秒向mysql server提交的寫請求次數:
計算公式:
W1=com_insert+com_delete+com_update  (均為當前值)
W2=com_insert+com_delete+com_update  (均為10s之前的值)
WRITES=W1-W2/10
是否保留:不保留
去除原因:這個監控選項和tps重複.

五.MYSQL.RWRATIO
定義:RWRATIO指自mysql server啟動以來的讀寫比例.注意這裡不是以10s前後來衡量的;
計算公式:
R= com_select+ qcache_hits (均為當前值)
W= com_insert+ com_delete+ com_update+ com_replace  (均為當前值)
RWRATIO=R/W (得出值保留小數點前的值)
是否保留:不保留
去除原因:這個監控選項可以間接透過mysql.reads和mysql.tps計算出來.無需另外設定監控項。

六.MYSQL.KEY_BUFFER_READ_HITS
定義:KEY_BUFFER_READ_HITS 指myisam引擎向key buffer讀命中率的情況.這個buffer用來儲存myisam的索引key;
計算公式:
KEY_BUFFER_READ_HITS=(1-( key_reads/ key_read_requests))*100%  (均為當前值)
(得出值保留小數點前的值)
是否保留:不建議保留
去除原因:現在只有sso和酒仙橋cms是myisam引擎.後續專案全部採用innodb.且這兩個專案會在合適時機會全部轉換為innodb。且目前這個2個專案資料壓力穩定.或者暫時只監控這2個業務.更換引擎後在刪除此監控項。


七.MYSQL.KEY_BUFFER_WRITE_HITS
  定義:KEY_BUFFER_WRITE_HIT 指myisam引擎向key buffer寫入命中率的情況;
計算公式:
KEY_BUFFER_WRITE_HIT =(1-(key_writes/key_write_requests))*100 (均為當前值)
(得出值保留小數點前的值).
是否保留:不建議保留
去除原因: 這個監控項只能體現myisam的命中率.myisam在未來專案中將會被淘汰.另外也沒有必要專門監控mysiam的write命中情況.關注key buffer的總體命中情況.更有意義。


八.MYSQL.QUERY_CACHE_HITS
定義:QUERY_CACHE_HITS指查詢快取的命中率情況.值越高代表query cache作用越大.從而降低引擎壓力.在mysql server層返回使用者結果;
計算公式:
QUERY_CACHE_HITS =qcache_hits/( qcache_hits+ qcache_inserts) *100% (均為的當前值)
(得出值保留小數點前的值).
是否保留:不建議保留
去除原因: 線上關鍵業務的修改量都比較大.而且操作query cache是一個global lock.導致 經常發生sql 停留在Waiting for query cache lock和失效query cache的狀態。另外.一個業務如果超過95%的sql是select.才建議開啟query cache。


九.MYSQL.INNODB_BUFFER_READ_HITS
定義:INNODB_BUFFER_READ_HITS.極為重要的一個狀態值.反應innodb引擎所需資料在記憶體中的命中的情況。
計算公式:
INNODB_BUFFER_READ_HITS=(1-(innodb_buffer_pool_reads/innodb_buffer_pool_read_requests))*100%  (均為當前值)(得出值保留小數點前的值).
是否保留:保留
報警閥值:小於95%
報警型別:小於95% 警告




十.MYSQL.THREAD_CACHE_HITS
定義:THREAD_CACHE_HITS=( 1-( threads_created/ connections))*100%  (均為當前值)
(得出值保留小數點前的值).
是否保留:保留
報警閥值:小於90%
報警型別:小於90% 警告


十一.MYSQL.SLOW_QUERIES_PER_SECOND
定義:SLOW_QUERIES_PER_SECOND 指每過去10秒平均每秒產生的slow log的總量;
計算公式:
SLOW_QUERIES_PER_SECOND = Slow_queries(當前值)- Slow_queries(10秒之前的值)/10
是否保留:保留
報警閥值:
報警型別:



十二.MYSQL.TEMP_TABLES_TO_DISK_RATIO
定義:TEMP_TABLES_TO_DISK_RATIO指在硬碟上建立臨時表的機率,越小越好.代表臨時表都建立在記憶體中。
計算公式:
TEMP_TABLES_TO_DISK_RATIO=(created_tmp_disk_tables/ created_tmp_tables)*100%
(均為當前值)(得出值保留小數點前的值).
是否保留:不建議保留
去除原因:瞭解sql效能是否存在問題.不應該僅關注這個比率.一條效能很差的sql產生磁碟臨時表對效能的影響可能比100條產生記憶體臨時表的sql大很多。應該積極關注慢查詢中那些執行時間非常長sql。


十三.MYSQL.TMP_DISK_TABLES_PER_SECOND
定義:TMP_DISK_TABLES_PER_SECOND 指過去10秒內每秒建立磁碟臨時表的數量;
計算公式:
TMP_DISK_TABLES_PER_SECOND=created_tmp_disk_tables(當前值)-created_tmp_disk_tables(10秒之前的值)/10
是否保留:建議保留
報警閥值:
報警型別: 



十四.MYSQL.SELECT_FULL_JOIN
 定義:SELECT_FULL_JOIN 指每秒執行full join的總量.這個引數一般發生在join過程中沒有使用索引的情況;
計算公式:
SELECT_FULL_JOIN= Select_full_join( 當前值)- Select_full_join(10秒之前的值)/10
是否保留:不建議保留
去除原因:並不是沒有利用索引的join效能就很差.對於不合理的sql.如果帶來效能影響.可以開啟慢查詢根據進行調優.full join可能只是其中一個原因。 一些小表的full join對效能衝擊很小。

十五.MYSQL.SELECT_FULL_JOIN_IN_ALL_SELECT
定義:SELECT_FULL_JOIN_IN_ALL_SELECT 指過去10秒鐘裡面.full join佔總select的比例;
計算公式:
S1= select_full_join(當前值)- select_full_join(10秒之前的值)
S2= com_select(當前值)- com_select(10秒之前的值)
SELECT_FULL_JOIN_IN_ALL_SELECT=s1/s2*100%(得出值保留小數點前的值).
是否保留:不建議保留
去除原因:理由同上 


十六.MYSQL.CONNECTIONS  
定義:CONNECTIONS指自mysql server啟動以來一共產生的連線數.這個值不能反映當前連線數.建議用Threads_connected 來衡量;
新的計算方式:CONNECTIONS= Threads_connected (當前值)
是否保留:保留
報警閥值:800
報警型別:大於800 嚴重.大於1500 災難 


十七.MYSQL.CONNECTION_TIME
定義:從mysql server所在伺服器上傳送一個簡單的查詢所需要的時間。
是否保留:不建議保留
去除原因:tcp_average比此引數更具參考價值.因為這個time是朝伺服器本身傳送請求.而tcp average關注的是應用ip向db server統計出來的時間。


十八.MYSQL.INNODB_ROW_LOCK_CURRENT_WAITS (新增)
定義:INNODB_ROW_LOCK_CURRENT_WAITS.因為公司大部分引擎都是innodb.所以有必要監控innodb行鎖的等待情況.狀態值反應了過去10秒有幾個sql處於等待row lock的狀態。
計算公式:INNODB_ROW_LOCK_CURRENT_WAITS= Innodb_row_lock_current_waits(當前值)
是否保留:保留
報警閥值:無
報警型別:無


十九.MYSQL.PROCESS_OF_MYSQLD
定義:process_of_mysqld用來監控mysqld的程式數.如果返回0.表示mysqld程式掛掉。
是否保留:保留
報警閥值:為0則報警
報警型別:災難



二十.MYSQL.HA_STATUS
定義:ha_status用來監控MHA程式是否存在.如果返回0.表示由於MHA的切換導致MHA自動退出.或者MHA服務沒有啟動。
是否保留:保留
報警閥值:為0則報警
報警型別:嚴重


二十一.MYSQL.SLAVE_STATUS
定義:mysql.slave_status用來監控slave的io thread和sql thread.如果任意一個執行緒的狀態為no.則返回0.否則返回1。
是否保留:保留
報警閥值:為0則報警
報警型別: 嚴重


二十二: MYSQL.TCP_COUNT
定義:利用percona的tcprstat從底層探測平均每秒傳送到mysql server的請求數.而不是在mysql server的內部進行統計。
是否保留:不建議保留
去除原因:這個監控的結果和qps的數目一致.重複監控


二十三:MYSQL.TCP_AVG
定義:每秒內傳送到mysql server所有請求的平均響應時間.此值大.表明mysql server異常.對請求做出響應的時間過長。單位為微妙。
是否保留:保留
報警閥值:無
報警型別:無


二十四:MYSQL.TCP_MAX
定義:過去一秒內.傳送到mysql server所有請求中響應時間最長的請求所花費的時間。單位為微妙。
是否保留:保留
報警閥值:無
報警型別:無


二十一.MYSQL.SLAVE_DELAYS
定義:mysql.slave_delay用來監控slave的sql thread同步master是否有延遲.如果有.返回延遲的秒數.如果沒有延遲.返回空
是否保留:保留
報警閥值:1200
報警型別:大於1200 嚴重.大於3600 災難


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2138156/,如需轉載,請註明出處,否則將追究法律責任。

相關文章