Mysql

MySQL Tuner 返回:MySQL 的最大記憶體使用量非常高

  • April 16, 2020

有人可以幫我優化我的 MSQL 配置。

我在 Ubuntu 18.4 上執行 Zabbix 和 Grafana。MySQL Tuner 顯示我的記憶體使用率非常高,但是當我使用 free 命令時,它顯示我有足夠的記憶體。

這是完整的 mysqltuner 關係:MySQLTuner

這裡是輸出:SHOW GLOBAL VARIABLESSHOW GLOBAL STATUSSHOW 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 次回滾。

引用自:https://dba.stackexchange.com/questions/264574