MySQL 太慢了

las*_*weq 6 mysql mariadb performance

我有一个 PHP/Laravel/MariaDB 项目,数据库每天都在变大,现在有些表已经有 4kk+ 记录

服务器是 4GB RAM + Ubuntu 14.04 + Apache (DigitalOcean)

当我只启动服务器(或重新启动它)时,一切正常,但几个小时后,任何请求mysql都非常慢

我一直有 1.5-2Gb 的空闲 RAM,但我找不到任何迹象,那里出了什么问题。如果我重新启动mysql进程,一切都会恢复正常状态,但几个小时后又会发生。

我相信数据库结构很好,索引和一切。因为它在前几个小时工作得很好。

我改变了my.cnf

innodb_log_file_size    = 500M
innodb_buffer_pool_size = 2G
Run Code Online (Sandbox Code Playgroud)

我尝试设置innodb_buffer_pool_size为3G,但之后mysql无法启动

我试图用谷歌搜索任何可能的词组合,并尝试实施不同的解决方案,但这没有帮助。我真的可以使用一个建议

Ric*_*mes 1

您的系统可能正在“交换”。这对 MySQL 的性能极其不利。通常,快速解决方法是缩小 buffer_pool。

innodb_buffer_pool_size = 1500M是关于可以在“小型”4GB 机器中安全完成的所有操作。

请记住,buffer_pool 是一个“缓存”。少量更改大小对 MySQL 的性能影响很小——除非它太小。你的数据似乎太大了,从而导致操作系统问题,超出了 MySQL 的大小。

您是否更改了 my.cnf 中的其他内容?

也减少max_connections。通常 100 就不错,但对于您的情况,可能 50 会更好。并减少它将创建的 Apache 子进程的数量。30可能还不错。