Mysql

MySQL消耗記憶體,求教如何配置

  • March 4, 2022

我有一個小型 VPS 可以處理我的 3 個個人 WordPress 網站。

在某個時間 MySQL 開始消耗越來越多的記憶體,實際上(幾個月)伺服器一直以 99% 的 RAM 使用率執行,而 MySQL 僅消耗超過 2 GB。

我的 VPS 是一個Ubuntu 14.04.05with MySQL 5.7.23(我升級以避免吃記憶體的 bug),2 amd64 CPU@3.9GHZ3 GB of RAM.

網路伺服器由 Virtualmin 配置,我自己幾乎沒有進行任何修改(請閱讀後文)。

我嘗試了 MySQLTuner 和其他一些腳本,但沒有任何幫助。

我只有這 3 個網站,每次流量高峰(這些是個人網站,所以“高峰”可能同時是 3 個使用者)VPS 崩潰。

您能幫我配置它以使用較少的 RAM 或診斷是否有問題嗎?我正在考慮切換到 MariaDB,但在不更改配置的情況下,我認為不會有任何改變。

為了便於閱讀,所有相關資訊都在這個 pastebin(2018 年 8 月 7 日發布)中:

https://pastebin.com/UasHBcH1

根據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 STATUSSHOW VARIABLES;可能還有其他需要調整的東西來減少過多的記憶體使用。 http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

同時,我發現 MySQLTuner 和各種“計算器”都沒有解決一些細節問題。我的連結提供了另一個“調諧器”;它可能會找到其他東西。

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