我一直在使用 MySQLTuner 来优化我的数据库,我遇到的唯一问题是:
[!!] 最大可能的内存使用量:14.8G(已安装 RAM 的 126%)
我不确定我应该做哪些更改才能将其降低到 12G RAM 以下。我有一个包含 110 个表、10,000,000 行(增长相当快)的数据库,平均有 250 个在线用户。我的 my.cnf 如下所示:
查询缓存限制=1M
查询缓存大小=128M
查询缓存类型=1
最大用户连接数=2000
最大连接数=2000
interactive_timeout=100
等待超时=100
连接超时=100
线程缓存大小=128
密钥缓冲区=16M
连接缓冲区=1M
最大允许数据包=16M
表缓存=15360
记录缓冲区=1M
排序缓冲区大小=4M
读取缓冲区大小=2M
最大连接错误=10
线程并发=8
myisam_sort_buffer_size=64M
服务器 ID=1
答案1
MySQL 的内存使用情况很难预测。我建议看看http://www.mysqlperformanceblog.com/2006/05/17/mysql-server-memory-usage/它介绍了安装中哪些内容正在使用内存。但总结一下:
“事实上,具有 8GB 内存的典型服务器通常的最大理论内存使用量为 100GB 或更多。”
或者换句话说,除非您开始看到服务器交换,否则不要过于担心最大可能内存使用量。
答案2
将 max_connections 降低至 200,将 wait_timeout 降低至 10
答案3
在调整数据库时,平均“在线用户”并不是特别重要,您需要考虑的是峰值请求。根据您的实际需求,您可以删除任何最大连接数、排序缓冲区大小、读取缓冲区或查询缓存。然后总是有“投入更多内存”的解决方案。
答案4
max_user_connections=2000
max_connections=2000
可以大大降低这些来调整您的 MySQL。