Mysql
MySQL Tuner 返回:MySQL 的最大記憶體使用量非常高
有人可以幫我優化我的 MSQL 配置。
我在 Ubuntu 18.4 上執行 Zabbix 和 Grafana。MySQL Tuner 顯示我的記憶體使用率非常高,但是當我使用 free 命令時,它顯示我有足夠的記憶體。
這是完整的 mysqltuner 關係:MySQLTuner
這裡是輸出:SHOW GLOBAL VARIABLES和SHOW GLOBAL STATUS 和SHOW FULL PROCESSLIST
和輸出:SHOW ENGINE INNODB STATUS因為 Zabbix 使用 excursively innodb 表。
top 命令的輸出和 htop 命令我也有 innotop 的輸出:Google Drive
以及 ulimit -a 的輸出
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31652 max locked memory (kbytes, -l) 16384 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 31652 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
和免費 -h
total used free shared buff/cache available Mem: 7,8G 7,0G 146M 37M 689M 554M Swap: 2,0G 417M 1,6G
如何增加mysql的記憶體使用量?如何優化我的 MySQL 配置,以便獲得最大的 CPU 和記憶體使用率?
感謝您的任何幫助!
每秒速率 = RPS
為您的 my.cnf 考慮的建議
$$ mysqld $$部分
read_rnd_buffer_size=128K # from 256K to reduce handler_read_rnd_next RPS of 917 innodb_change_buffer_max_size=15 # from 25 (percent) set aside for maintenance innodb_flush_neighbors=2 # from 1 to clear in current extent to reduce innodb_buffer_pool_pages_dirty count faster innodb_flushing_avg_loops=5 # from 30 to reduce flushing delay innodb_lru_scan_depth=100 # from 1024 to reduce 90% of CPU cycles used for function every second innodb_thread_concurrency=6 # from 10 to expedite query completion by your 4 cores
這些更改將減少所需的 RAM 並縮短響應時間。有關其他建議和可免費下載的實用程序腳本,請查看我的個人資料、網路個人資料以獲取聯繫資訊。
觀察:您的 8GB 伺服器將繼續努力支持 26GB 的 innodb 數據。48GB 對於您的工作量來說是一個合理的提升。com_begin 的計數比 com_commit 活動多 34 個。有人在完成後忘記送出嗎?順便說一句,在 88,665 秒(僅超過 1 天)期間,您似乎也進行了 34 次回滾。