[MySQL FAQ]系列 -- Too many open files
By yejr on 28 十二月 2007
错误信息如下:
..... 070813 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './yejr/access.frm' (errno: 24) 070813 13:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Can't open file: './yejr/accesslog.frm' (errno: 24) ...... 070813 13:10:17 [ERROR] Error in accept: Too many open files ....
注意到, 系统错误代号是 24, 用 perror 来查看一下具体的错误信息是什么:
[root@yejr]# /usr/local/mysql/bin/perror 24 OS error code 24: Too many open files
原来是打开文件太多了, 好办.用sysctl来调整一下就好了:
[root@yejr]# sysctl -w fs.file-max=43621
[root@yejr]# sysctl -a | grep fs.file-max
fs.file-max = 43621
FreeBSD 下也用sysctl来调整:
[root@yejr]# sysctl -w kern.maxfiles=123280 [root@yejr]# sysctl -a | grep kern.maxfiles kern.maxfiles = 123280
最后, 还有最重要的一点是, 修改 mysqld 的配置文件 my.cnf, 增加如下一行:
open_files_limit = 4096 #根据自己的情况适当调整,系统默认值是 # max_connections*5 或 max_connections + table_cache*2
然后, 以root身份重新启动 mysqld. 在这里, 尽管 my.cnf 中指定的运行用户不是root, 一样可以以root身份来启动mysqld, 否则 open_files_limit 选项无法生效, 因为内核限制了普通用户的最多打开文件数.
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何正确实现一个 BackgroundService
· 抽象与性能:从 LINQ 看现代 .NET 的优化之道
· AI 时代,为什么我们还有必要写博客?
· 行业思考:不是前端不行,是只会前端不行
· C#高级GDI+实战:从零开发一个流程图
· 被 DDoS 攻击的一夜
· 记一次酣畅淋漓的js逆向
· 一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
· 如何正确实现一个 BackgroundService
· 上周热点回顾(7.28-8.3)