mysql - MariaDB max_open_files 超过 600k
问题描述
关于 max_open_files 的问题已经被问了一千次了。但是,大多数情况下建议将限制设置为 65535 左右。但是,我们的警告是 mysql 试图打开超过 640k 的文件。我们将限制增加到 768k。但是,文档表明 1024x1024 (1048576) 是 linux 限制。
基本上,有没有办法找出为什么我们有这么多打开的文件?我们只有 1 个中型 db(小于 300mb)和 6-8 个非常小的 db。如果 1024x1024 真的是极限,那么在 6 个月或更短的时间内,我们似乎可能会超过这个极限。然后什么?数据库会内爆吗?
解决方案
MySQL 也为其他事情打开一个“文件”,但打开文件数量多的主要原因是连接。
MySQL 和几乎所有数据库的行为都是这样的,每个连接都算作一个打开的文件。
您可以通过以下方式检查连接数:
SHOW STATUS LIKE '%Threads_connected%';
可能您需要调整max_connections参数并从应用程序的角度寻找持久连接和池。
如果您的数据库有问题、连接卡住或某种“dos”,您可以检查正在执行的进程:
SHOW FULL PROCESSLIST;
并最终杀死一些奇怪的东西:
KILL <pid>; -- the id from the command above
推荐阅读
- google-apps-script - Google Sheets Script - 这个复制列的脚本有效,但它的形式不好?
- xamarin.forms - 如何创建约会的调度程序/看板视图
- python - python中的内部函数没有在正确的位置返回
- python - 我得到一个索引类型不合适的 IndexError,但我已经使用 int() 函数对索引进行了类型转换。有人可以帮忙解释一下吗?
- c# - Web API - 此模型项字典需要类型 'System.Collections.Generic.IEnumerable
- deep-learning - yolov3上采样层使用的上采样技术是什么?互联网上没有资源,原始论文没有很好地描述它
- python-3.x - 为什么python3 str有startswith而不是starts_with?
- reactjs - 如何获取 Firebase 存储数据
- angular - Angular - 无法从 ngForm 获取 .ts 文件中的电子邮件值
- php - 如何在一个 HTML 表格中显示多个数组变量?