Mysql内存不足

Mysql内存不足

我遇到了很多麻烦,mysql 在一台小型机器上占用了太多的内存,我正在寻求一些帮助来弄清楚为什么它占用了这么多的内存。

我有一台运行 Debian Wheezy 的小型虚拟机,内存为 256MB。在这台服务器上,我安装了 apache2 和 mysql。我在这台服务器上做的不多,只有几个偶尔使用的网站和一个邮件服务器。

由于某种原因,我的 mysql 服务器每天都会崩溃几次。当我检查系统日志时,我发现以下错误:

内核:[3323593.630722] UB 内存不足:OOM 杀死进程 9471 (mysqld) 得分 0 vm:327824kB,rss:37080kB,交换:0kB

据我所知,mysql 开始消耗过多内存并被系统终止。我记录了慢查询并密切关注我的 mysql.err 日志,但我没有在这些日志中看到任何有价值的信息,这些信息可以告诉我为什么 mysql 开始消耗如此多的内存。

我的 my.cnf 文件设置了以下选项:

key_buffer              = 8M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8

query_cache_limit       = 512K
query_cache_size        = 8M

另一件事是,当我启动 mysql 时,甚至在它运行的白天,我检查内存使用量时,通常有大约 128MB 的可用内存。我不明白 mysql 怎么会消耗这么多内存。

我该怎么做才能查明这个问题?

答案1

对于 Apache 和 MySQL 来说,256 MB 非常低。我总是建议至少 512MB(这是最低限度)。但是,您所说的不一定是 MySQL 导致了问题,只是 OOM 杀手杀死了 MySQL,因为 VM 内存不足。除此之外,MySQL 有很多默认值,所以即使您没有在 my.cnf 中设置它们,innodb_buffer_pool_size 也会要求 8MB 等等。

相关内容