在啟用所有PS效能模式工具的情況下,效能損耗過高,怎麼辦
問題描述
啟用所有效能模式工具後,會觀察到以下一個或多個症狀:
- MySQL的效能比較慢。
- CPU使用率高於正常水平。
- InnoDB訊號量等待的次數高於正常情況,儘管顯示引擎INNODB狀態不一定顯示任何訊號量等待。
問題原因
這是由於啟用了所有效能模式工具和使用者:
SELECT ROUND(( SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE ENABLED = 'YES' )/( SELECT COUNT(*) FROM performance_schema.setup_instruments )*100, 2 ) AS 'InstrumentsEnabledPct', ROUND(( SELECT COUNT(*) FROM performance_schema.setup_instruments WHERE TIMED = 'YES' )/( SELECT COUNT(*) FROM performance_schema.setup_instruments )*100, 2 ) AS 'InstrumentsTimedPct', ROUND(( SELECT COUNT(*) FROM performance_schema.setup_consumers WHERE ENABLED = 'YES' )/( SELECT COUNT(*) FROM performance_schema.setup_consumers )*100, 2) AS 'ConsumersEnabledPct';
特別是啟用互斥等待工具會導致高效能工作負載的效能顯著下降。
附註:對於MySQL 5.6中的一些工作負載,在預設的效能模式設定下也會出現類似的問題。一個症狀是gdb(或類似的)跟蹤顯示許多執行緒的堆疊跟蹤包含:
- #0 in my_timer_cycles () at my_rdtsc.c
- #1 in end_table_io_wait_v1 pfs.cc
這個問題在MySQL 5.7中不太可能出現,在MySQL 5.7中,對於批次I/O操作(例如表或索引掃描的行提取),效能模式現在可以報告N行的單個事件,而不是報告N次單行事件。
解決方案
重置效能模式工具和使用者
CALL sys.ps_setup_reset_to_default(FALSE);
如果您沒有sys模式安裝後,您可以在MySQL 5.6中使用以下查詢來重置效能模式設定:
DELETE FROM performance_schema.setup_actors WHERE NOT (HOST = '%' AND USER = '%' AND ROLE = '%'); INSERT IGNORE INTO performance_schema.setup_actors VALUES ('%', '%', '%'); UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME NOT LIKE 'wait/io/file/%' AND NAME NOT LIKE 'wait/io/table/%' AND NAME NOT LIKE 'statement/%' AND NAME NOT IN ('wait/lock/table/sql/handler', 'idle'); UPDATE performance_schema.setup_consumers SET ENABLED = IF(NAME IN ('events_statements_current', 'global_instrumentation', 'thread_instrumentation', 'statements_digest'), 'YES', 'NO'); DELETE FROM performance_schema.setup_objects WHERE NOT (OBJECT_TYPE = 'TABLE' AND OBJECT_NAME = '%' AND (OBJECT_SCHEMA = 'mysql'AND ENABLED = 'NO'AND TIMED = 'NO' ) OR (OBJECT_SCHEMA = 'performance_schema' AND ENABLED = 'NO'AND TIMED = 'NO' ) OR (OBJECT_SCHEMA = 'information_schema' AND ENABLED = 'NO'AND TIMED = 'NO' ) OR (OBJECT_SCHEMA = '%'AND ENABLED = 'YES' AND TIMED = 'YES')); INSERT IGNORE INTO performance_schema.setup_objects VALUES ('TABLE', 'mysql' , '%', 'NO' , 'NO' ), ('TABLE', 'performance_schema', '%', 'NO' , 'NO' ), ('TABLE', 'information_schema', '%', 'NO' , 'NO' ), ('TABLE', '%' , '%', 'YES', 'YES'); UPDATE performance_schema.threads SET INSTRUMENTED = 'YES';
禁用“長曆史”效能模式表
如果不想重置整個效能模式配置,至少要檢查“歷史長”表是否與同步物件(如互斥體和rwlocks)的效能模式工具一起使用。因為在檢測同步物件時,訪問效能模式的“歷史長”表可能會對效能產生非常不利的影響。當例項的效能不好時,透過發出以下查詢來檢查它們是否已啟用:
select * from performance_schema.setup_instruments where name like 'wait/sync%' and (enabled='yes' or timed='yes'); select * from performance_schema.setup_consumers where name like '%_history_long' and enabled='yes';
如果啟用了它們,請嘗試使用以下查詢禁用它們,並監視效能:
update performance_schema.setup_instruments set enabled='no', timed='no where name like 'wait/sync%'; update performance_schema.setup_consumers set enabled='no' where name like '%_history_long';
如果您需要PS工具來進行統計分析,那麼至少要考慮禁用“長曆史”消費者。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2996069/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼情況下進行效能測試
- 香港高防伺服器高防IP在頻寬不夠充足的情況下是怎麼做到良好的防護效能的伺服器
- 高併發高負載情況下常見的3種效能問題負載
- composite模式在什麼樣的情況下比較適用啊模式
- 在什麼情況下用index unique scansIndex
- win10怎麼開啟卓越效能模式 win10開啟卓越效能模式的方法Win10模式
- 通過 Battery Historian 工具分析 Android APP 耗電情況BATAndroidAPP
- 什麼情況下應該分解複雜的查詢來提升效能
- win10開啟卓越效能方法 win10怎麼開啟卓越效能模式Win10模式
- win10卓越效能模式怎麼開啟_win10卓越效能模式如何設定Win10模式
- 生產中怎樣處理masksToBounds離屏渲染帶來的效能損耗
- Transactional replication 的Snapshot 檔案在什麼情況下會被清除
- iOS11.4.1耗電快嗎?iOS11.4.1耗電情況怎麼樣?iOS
- win10提示您的主機不滿足在啟用Hyper-V或Device/Credential Guard的情況下執行VMware怎麼辦Win10dev
- 效能查詢並殺CPU高耗程式
- Win10系統怎麼開啟高效能模式Win10模式
- 開始使用 Org 模式吧,在沒有 Emacs 的情況下模式Mac
- OpenSIPS 2.4.2 高併發下,日誌丟失怎麼辦
- 在什麼情況下Java比C++快?JavaC++
- iPhone 在使用 Charles 抓包情況下無法開啟 APPstore 解決方法iPhoneAPP
- 沒有備份的情況下處理undo損壞
- 如何開啟win10效能模式_win10開啟卓越效能模式的方法Win10模式
- 怎麼樣把mysqld壓測到崩潰重啟?什麼情況下mysqld崩潰重啟?MySql
- 請問這種情況應該用什麼模式?模式
- 在Load average 高的情況下如何鑑別系統瓶頸。
- MarshalByRefObject 的效能損失Object
- 在什麼情況下,Java比C++慢很多?JavaC++
- 【VMware vCenter】在不重啟的情況下重置vCenter Server的root密碼。Server密碼
- DeepSparse: 透過剪枝和稀疏預訓練,在不損失精度的情況下減少70%的模型大小,提升三倍速度模型
- 領導對介面的重視超過了效能,我該怎麼辦?
- MySQL效能最佳化盲區(高併發情況下,事務內的資料先更新還是先查詢?)MySql
- [譯] 如何在無損的情況下讓圖片變的更小
- 3.1.5.3 在不掛載資料庫的情況下啟動例項資料庫
- win10電池損耗怎麼看_如何檢視win10電腦電池損耗Win10
- AMD MPSoC PS PCIe作為EP與Host在異常狀態下的工作情況
- Go高階特性 12 | 指標詳解:在什麼情況下應該使用指標?Go指標
- win10電源管理只有平衡模式怎麼辦 win10電源找不到高效能模式怎麼開Win10模式
- SYSAUX表空間佔用過大情況下的處理(AWR資訊過多)UX