如何让 MySQL 使用更少的内存?

Bet*_*iga 7 mysql memory out-of-memory

我正在尝试使用 Drush 将数据库更新到只有几个节点和 85 个模块的 Drupal 7 站点......随着更新几乎每次都消失很明显,对于具有 512MB 的 VPS 及其容器化服务(mysql, nginx、php-fpm 等),内存不足...

据我从日志中了解到,每次 MySQL 被内核杀死时:

内存不足:杀死进程 4310 (mysqld)

我的问题是,如何配置 MySQL 服务以避免它的“暗杀”?MySQL配置文件中有哪些参数可以降低mysqld进程的内存消耗?

我在 DEV,所以我不介意这个过程是否变慢。我只想知道我必须调整哪些参数才能在不增加内存的情况下在更新过程中幸存下来。

谢谢你的帮助。

Hos*_*ein 12

只有您需要:

[mysqld]
performance_schema = off
Run Code Online (Sandbox Code Playgroud)

  • 这是整个互联网上最好的答案! (5认同)
  • 这一个对我来说很重要,实际使用的内存从 175M 减少到 37M。 (3认同)
  • 文件位于 /etc/mysql/my.cnf 中 (2认同)
  • 我的从390M变成了181M。 (2认同)

Arv*_*rvy 6

我在 Vultr 的 512 Mb RAM 中的配置,带有 Fedora 29 和 MariaDB。使用大约 26% 的 RAM。

[mysqld]
performance_schema = off
key_buffer_size = 16M
query_cache_size = 2M
query_cache_limit = 1M
tmp_table_size = 1M
innodb_buffer_pool_size = 1M
innodb_log_buffer_size = 1M
max_connections = 25
sort_buffer_size = 512M
read_buffer_size = 256K
read_rnd_buffer_size = 512K
join_buffer_size = 128K
thread_stack = 196K
Run Code Online (Sandbox Code Playgroud)

在小型 VPS 中,不要忘记启用交换。例如,在 Vultr 中,默认值是没有交换。在数字海洋中也是如此。


Sha*_*dow 4

这样的参数有几十个,你可以在mysql服务器系统变量文档中找到所有这些参数的详细描述。一般来说,寻找size其中包含该词的变量。特别要注意的innodb_buffer_pool_size是,默认值是 128MB,在专用服务器上的建议值是物理内存的 80%。