首页 > 解决方案 > MySQL经常崩溃

问题描述

我在 DigitalOcean 上使用 Laravel Forge 创建了一个 droplet,几天前 MySQL 服务器崩溃了,让它再次工作的唯一方法是重新启动服务器(MySQL 使服务器无响应)。

当我键入 htop 以查看进程列表时,其中显示了一些/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysql.pid(当前显示了 33 个)。

错误日志大于 1GB(是的,我知道!)并显示此消息数百次:

[警告] InnoDB:在缓冲池中很难找到空闲块(21 次搜索迭代)!21 次刷新页面的尝试失败!考虑增加缓冲池大小。在您的 Unix 版本中,fsync 也可能非常慢,或者完全冻结在操作系统内核中。然后升级到更新版本的操作系统可能会有所帮助。查看下面诊断信息中的 fsync 数量。挂起的刷新(fsync)日志:0;缓冲池:0。167678974 操作系统文件读取,2271392 操作系统文件写入,758043 操作系统 fsync。启动 InnoDB Monitor 以将进一步的诊断信息打印到标准输出。

这个水滴已经运行了 6 个月,但这个问题直到上周才开始出现。最近唯一改变的是现在我们每周向客户发送通知(仅限订阅它的客户),让他们知道本周发生的某些事件。这是一个密集的过程,因为我们有几千个客户,但我们利用 Laravel 队列来处理所有事情。

这是与 MySQL 设置相关的问题吗?

标签: mysqldigital-oceanlaravel-forge

解决方案


尝试innodb_buffer_pool_size在 my.cnf 中增加

专用数据库服务器的建议是 80% - 如果您已经处于该级别,那么您应该考虑迁移到更大的实例类型。


推荐阅读