mariadb 10.3.13 table_open_cache问题

时间:2019-03-06 15:49:15

标签: mariadb

只需将mysql 5.6升级到mariadb 10.3.13-现在,当服务器达到open_tables = 2000时,我的php查询将停止工作-如果执行刷新表,它将再次开始正常工作。这在我使用mysql时从未发生过-现在我一天都必须登录并创建刷新表才能使事情再次正常工作

使用WHM / Cpanel管理我的VPS,在上一个WHM版本中,它开始警告我MySql的版本(真的不记得它是哪个版本-当我获得VPS时已加载的版本)我正在运行即将结束,我需要升级到SQL 5.7或MariaDB xxx。无论如何一直想搬到MariaDB,所以我就是这么做的-WHM建议使用10.3.13版本。

经过更多的观察和查看,看来使我的open_tables达到2000 max的是自动CPANEL备份例程-它也一口气备份了我的所有数据库。不会导致任何崩溃,只会导致我的PHP应用程序连接出现问题-我不认为连接被拒绝-它们只是不返​​回任何数据...。已关闭所有自动WHM / CPANEL备份,一切都解决了下来一点。

table_definition_cache 400 table_open_cache 2000

我仍然通过cron进行mysqldump备份我的数据库-只有两个活动数据库,它们仍然使tables_open增长到2000个最大值-只是没有那么快。

我现在运行一个脚本,该脚本每小时运行一次,向我展示一些变量,这就是我所看到的

执行刷新表命令后,open_tables和open_table_definitions都开始增加,直到open_table_definitions达到400为止,它停止增加,而open_tables一直保持增加。

然后在清晨发生mysqldumps时,tables_open达到2000(最大设置),并且我的php查询未执行

我没有收到PHP错误。

我运行了以下命令,以便可以看到数据库端发生的情况。

SET GLOBAL general_log ='ON'

看日志,当一切运行正常时,我看到我的应用程序正在连接,准备语句,执行语句然后断开连接...。

当它开始起作用时我做了同样的事情(即我的php应用程序开始不再得到结果)

看看日志,我看到我的应用程序正在连接,然后准备该语句,然后与其看到它执行该语句,不如再执行两次相同的语句,然后断开连接...

我登录mysql并执行了flush table命令,一切恢复正常-应用程序连接,准备一条语句,执行它,断开连接...

但是,在我搬到MariaDB之前,这从未发生过-我从来没有弄乱过MySQL服务器的东西-重启MySQL的唯一时间是当我进行CENTOS 6系统更新并不得不重新启动服务器时-可能要花上几个月的时间在服务器上做某事...。

1 个答案:

答案 0 :(得分:0)

看起来是系统的罪魁祸首-我将open_table_cache更改为400,并且即使在每晚备份数据库后,我的php应用程序也不再存在准备语句的问题。查看较早的mysql文档,mysql 5.6.7的table_open_cache设置为400,因此当我升级到mariadb 10.3.13时,默认设置更改为2000,这是我开始遇到问题的时间。

不太确定以下内容会告诉我什么,但可能会引起您的兴趣。...

su-mysql

-bash-4.1 $ ulimit -Hn 100 -bash-4.1 $ ulimit -Sn 100 -bash-4.1 $退出 登出  [〜]#ulimit -Hn 4096 [〜]#ulimit -Sn 4096