MySQL消耗記憶體,求教如何配置
我有一個小型 VPS 可以處理我的 3 個個人 WordPress 網站。
在某個時間 MySQL 開始消耗越來越多的記憶體,實際上(幾個月)伺服器一直以 99% 的 RAM 使用率執行,而 MySQL 僅消耗超過 2 GB。
我的 VPS 是一個
Ubuntu 14.04.05
withMySQL 5.7.23
(我升級以避免吃記憶體的 bug),2 amd64 CPU@3.9GHZ
和3 GB of RAM
.網路伺服器由 Virtualmin 配置,我自己幾乎沒有進行任何修改(請閱讀後文)。
我嘗試了 MySQLTuner 和其他一些腳本,但沒有任何幫助。
我只有這 3 個網站,每次流量高峰(這些是個人網站,所以“高峰”可能同時是 3 個使用者)VPS 崩潰。
您能幫我配置它以使用較少的 RAM 或診斷是否有問題嗎?我正在考慮切換到 MariaDB,但在不更改配置的情況下,我認為不會有任何改變。
為了便於閱讀,所有相關資訊都在這個 pastebin(2018 年 8 月 7 日發布)中:
根據MySQL Calculator,它應該只需要 293 MB,而且我沒有那麼多訪問者來證明這種使用是合理的。
為您的 my.cnf 考慮的建議
$$ mysqld $$部分
thread_cache_size=20 # from 8 mysqld takes 8 minimum, keep breathing room read_buffer_size=1M # from 256K to reduce handler_read_next count table_open_cache=500 # from 80 to support 327 opened since startup innodb_buffer_pool_size=1G # from 128M for effective 750M for growth over time innodb_log_file_size=64M # from 8M to be larger than innodb_log_buffer_size innodb_io_read_threads=16 # from 3 to speed up reads innodb_io_write_threads=16 # from 3 to speed up writes innodb_io_capacity=1000 # from 200 to increase iops limit max_heap_table_size=16M # from 12M to raise RAM capacity tmp_table_size=16M # from 12M should be same size and will reduce created_tmp_disk_tables innodb_buffer_pool_dump_pct=90 # from 25 for reduced WARM up time query_cache_limit=0 # from 525312 conserve RAM QC not being used
如需其他建議,請查看個人資料、聯繫資訊的網路配置文件,包括 Skype ID。
只有 3G 的 RAM,加上執行其他程序,
innodb_buffer_pool_size=1G
可能太高了。將其設置為 500M。(對於較新版本的 MySQL,128M 太低了。)如果 RAM 用完,該更改是使系統穩定的最簡單的“快速修復”。
query_cache_type = OFF
還通過和query_cache_size = 0
(不是_limit)完全關閉查詢記憶體。如果您可以讓伺服器保持一天的正常執行,請提供
SHOW GLOBAL STATUS
和SHOW VARIABLES
;可能還有其他需要調整的東西來減少過多的記憶體使用。 http://mysql.rjweb.org/doc.php/mysql_analysis#tuning同時,我發現 MySQLTuner 和各種“計算器”都沒有解決一些細節問題。我的連結提供了另一個“調諧器”;它可能會找到其他東西。