MySQL经常崩溃

MySQL经常崩溃,mysql,digital-ocean,laravel-forge,Mysql,Digital Ocean,Laravel Forge,我在DigitalOcean上使用Laravel Forge创建了一个水滴,因为几天前MySQL服务器刚刚崩溃,唯一能让它再次工作的方法是重新启动服务器(MySQL使服务器无响应) 当我键入htop以查看进程列表时,会显示一些/usr/sbin/mysqld--daemonize--pid file=/run/mysqld/mysql.pid(当前显示了33个进程) 错误日志大于1GB(是的,我知道!),并数百次显示此消息: [警告]InnoDB:在缓冲池中很难找到可用块(21 搜索迭代)!刷新

我在DigitalOcean上使用Laravel Forge创建了一个水滴,因为几天前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操作系统fsyncs。启动InnoDB监视器进行打印 标准输出的进一步诊断

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


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

请尝试在my.cnf中增加
innodb\u buffer\u pool\u size


专用DB服务器为80%——如果您已经处于该级别,那么您应该考虑移到更大的实例类型。 在my.cnf中设置此值:

innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances = 12
innodb_page_cleaners = 12

非常感谢您的回复@Oliver!我在一个有16GB RAM的服务器上,所以我将innodb_buffer_pool_大小更改为13GB(在使用默认值之前),并做了一个测试:我运行一个脚本删除表中的所有记录,然后再次添加它们,总共30k条记录。似乎更好,错误消息的数量更少,但它们仍然存在:“InnoDB:page_cleaner:1000ms预期循环时间为4228ms。设置可能不是最佳设置。”如果您像看起来那样翻阅大量记录页面,则会出现该警告,有关更多详细信息,请参阅例如。