Too Many Open Files
a year ago
- #rust
- #unix
- #file-descriptors
- 作者在Rust项目中运行测试时遇到了'Too many open files'错误
- Unix系统中的文件描述符(fd)是操作系统用来标识打开文件的正整数,包括普通文件、目录、管道、套接字和设备文件
- Unix进程的标准文件描述符是stdin(0)、stdout(1)和stderr(2)
- `ls /dev/fd`(macOS)和`ls /proc/<pid>/fd`(Linux)等命令可以列出打开的文件描述符
- `lsof`是一个实用命令,可以列出所有打开的文件及其描述符
- 操作系统会对进程能打开的文件描述符数量设限,可通过`sysctl`和`ulimit`查看限制
- 提高软限制(`ulimit -n`)可解决'Too many open files'错误
- 作者创建了一个监控脚本,用于跟踪`cargo test`执行期间打开的文件描述符数量
- 将软限制提高到8192后问题解决,测试得以顺利运行