减少ubuntu @ aws微实例上mysql的内存消耗

Gya*_*yan 29 mysql memory-management mysql-management amazon-ec2 amazon-web-services

我最近开始了一个PoC项目,我们正在开发一个小型的Web应用程序.初始设置在AWS的微实例上完成.我们在rails + mysql堆栈上.

在安装/运行MySQL之后,我发现已经消耗了大约500多MB的RAM; 其余的系统留下的相当少(微型实例只有620 MB RAM).

我们的应用程序在此阶段相当简单.我可以做些什么来减少MySQL服务器消耗的内存吗?

感谢帮助.

Mah*_*ahn 80

在你的my.cnf文件中:

performance_schema = 0
Run Code Online (Sandbox Code Playgroud)

并重启mysql.如果您以前使用它,这应该会大大削减内存使用量.


2016编辑:从MySQL 5.7.8开始,上述内容不足以释放性能架构数据的内存:

从MySQL 5.7.8开始,即使禁用了性能模式,它也会继续填充global_variables,session_variables,global_status和session_status表.

(来源)

要防止此行为,请show_compatibility_56另外设置为1 performance_schema.也就是说,你的my.cnf更改应该如下所示:

performance_schema = 0
show_compatibility_56 = 1
Run Code Online (Sandbox Code Playgroud)

  • 这个答案缺少对“performance_schema”到底是什么以及禁用它的含义的解释。 (5认同)
  • 这对低内存服务器非常有用.谢谢 !仅供参考,show_compatibility_56 = 1已从MySQL 8.0.1开始删除https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html (3认同)
  • 在我的系统(Ubuntu 20.04,mysql 8.0.22)上,我在`/etc/mysql/my.cnf`中找到了配置文件,并且必须在`performance_schema = 0`之前添加一行`[mysqld]`。内存使用量从约 350MB 减少到 130MB。 (3认同)
  • 从400MB减少到25MB. (2认同)
  • 此后我问了以下问题:/sf/ask/5273594161/。 (2认同)

小智 37

在MySQL配置文件(my.cnf)中更改此设置

key_buffer              = 8M 
max_connections         = 30 # Limit connections
query_cache_size        = 8M # try 4m if not enough 
query_cache_limit       = 512K
thread_stack            = 128K
Run Code Online (Sandbox Code Playgroud)

  • key_buffer 在 mysql 5.7 上给我错误。我使用 key_buffer_size 代替 (5认同)
  • 另见Mahn的答案,这是非常激进和有效的. (3认同)
  • 运行 MySQL 8.0.17。除了按照 Ivan 的建议用“key_buffer_size”替换“key_buffer”之外,我还必须删除“query_cache_size”和“query_cache_limit”行。MySQL 文档说“从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。” (3认同)