Minio报错too many open files且统计对象数量低于实际上传量问题咨询
问题产生原因
- 核心原因是Minio进程的最大打开文件句柄限制(ulimit -n)不足:Minio运行时,每个对象元数据、网络连接都会占用文件描述符,你存储了约15万个对象,控制台统计对象总数时需要批量读取全量对象的元数据文件,默认的1024或4096的文件句柄限制无法支撑该操作,因此触发
too many open files报错。 - 对象统计数量少于实际上传量是上述问题直接导致的:全量对象计数逻辑因为文件句柄耗尽中途中断,未能完成所有元数据的读取统计,最终只返回了部分扫描到的对象数量。
解决方案
临时生效方案(进程重启后失效)
- 先查询Minio进程PID:
ps -ef | grep minio
- 临时调整该进程的文件句柄限制:
prlimit --pid <替换为实际Minio进程PID> --nofile=65535:65535
也可以在启动Minio前先执行ulimit -n 65535,再启动Minio进程即可临时生效。
永久生效方案
若使用systemd管理Minio服务
- 编辑Minio的service配置文件,默认路径为
/etc/systemd/system/minio.service - 在
[Service]配置段添加如下参数:
LimitNOFILE=65535
- 重载systemd配置并重启Minio服务:
systemctl daemon-reload systemctl restart minio
若使用二进制直接启动
- 编辑系统限制配置文件
/etc/security/limits.conf,添加两行配置:
* soft nofile 65535 * hard nofile 65535
- 保存文件后重新登录服务器,再启动Minio即可永久生效。
生效验证
Minio启动后执行如下命令,确认最大打开文件限制已调整为65535即可:
cat /proc/<替换为实际Minio进程PID>/limits | grep 'Max open files'
调整完成后重新访问Minio控制台,等待全量元数据扫描完成,对象统计数量就会恢复为实际值,too many open files报错也会消失。
内容的提问来源于stack exchange,提问作者Shan Tang
相关产品推荐
相关产品推荐

