Hasty Briefsbeta

双语

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后问题解决,测试得以顺利运行