Mysql启动失败(可用内存接近于零)



我有一个ruby脚本的cron作业,它每10分钟在一个表中执行一次crud操作。问题是,同时buff/cache和shared在5天后增加,可用空间接近零,mysql开始失败。

[root@openldap ~]# free -m
total        used        free      shared  buff/cache   available
Mem:       2048         227           0        1792        1820        1820
Swap:      2048           0        2048
  • MySQL服务器已离开(Mysql2::Error::ConnectionError(
  • MySQL客户端未连接(Mysql2::错误((
  • 无法通过套接字'/var/lib/MySQL/MySQL.sock'(111(连接到本地MySQL服务器(Mysql2::Error::ConnectionError((
  • Mysql启动失败(无法重新启动Mysql(

有人能告诉我这里的问题吗?很抱歉,如果问题含糊不清,我可能不明白你需要知道什么。感谢

让我总结一下问题:

  • 接近零的可用内存
  • MySQL服务器已离开(Mysql2::错误::ConnectionError((
  • MySQL客户端未连接(Mysql2::错误((
  • 无法通过套接字'/var/lib/MySQL/MySQL.sock'(111(连接到本地MySQL服务器(Mysql2::Error::ConnectionError((
  • Mysql启动失败(无法重新启动Mysql(

答案:

  • 接近零的可用内存:

您的内存不低也不接近零(读取:https://linuxatemyram.com/),事实上,您甚至还没有进行交换(交换使用=0(,并且您的可用内存仍然是1820(2048的89%(

快速解释:linux(甚至windows(会用磁盘缓存填充它的空RAM空间。当您需要更多空间时,这些缓存可以(并且将自动(被删除。参见CCD_ 1字段(空闲+缓冲区/高速缓存(;免费的";你的记忆力。

  • MySQL服务器已离开(Mysql2::Error::ConnectionError(

我假设您的脚本总是在后台(或前台(运行,而不是使用cron,并且在脚本启动时打开mysql连接,然后重用该连接,例如:

# pseudocode
conn = OpenMySQLConnection(host,user,pass,db)
while true {
conn.query(sql)
sleep(10 minute)
}
conn.close()

这种代码会让mysql服务器在超时的情况下关闭它的连接,因为这是因为你正在打开连接,进行查询,然后在10分钟内不进行任何查询。在mysql的默认设置中。相反,您可以尝试:

# pseudocode
while true {
conn = OpenMySQLConnection(host,user,pass,db)
conn.query(sql)
sleep(10 minute)
conn.close()
}

我亲身经历过这种";mysql服务器消失了";在我的项目中有一个错误,即物联网设备打开(并且很长一段时间没有关闭(mysql连接。当我像上面一样将代码从open-loop-sleep更改为loop-open-query-close时,它解决了我的问题。

其他原因(我认为不太可能(如下:https://matomo.org/faq/troubleshooting/faq_183/

  • MySQL客户端未连接(Mysql2::错误((

我怀疑当mysql服务器关闭它的连接时,你会得到MySQL client is not connected (Mysql2::Error)),而这个错误MySQL client is not connected (Mysql2::Error))发生在你试图对关闭的mysql连接执行查询时

  • 无法通过套接字'/var/lib/MySQL/MySQL.sock'(111(连接到本地MySQL服务器(Mysql2::错误::ConnectionError((

我怀疑这个错误是上述错误的另一个变体。看看我提出的解决方案是否能解决所有问题。

  • Mysql启动失败(无法重新启动Mysql(

请检查您的服务日志(例如,对于带有systemd:systemctl status mysqldjournalctl -xeservice status mysqld的发行版(中的mysql错误消息,并将其发布在您的问题中。

相关内容

  • 没有找到相关文章

最新更新