HsOjo’s Blog

📒 A powerless rookie's tree hole.

解决 SSH Session 中 open files 限制问题

2024-06-1900 分钟
type
status
date
slug
summary
tags
category
icon
password

前言

本人日常开发流程中常使用 PyCharm 中的 Remote Interpreter,其通过 SSH 连接到基于 systemD 的容器环境,长时间运行项目后会出现 OSError: [Errno 24] Too many open files
虽然这个问题一定程度上可能与业务代码有关,但默认限制允许单进程打开的文件数量(1024)属实也太低了,多线程场景下会超出限制也是常有的事情。

原因分析

docker-compose.yml 中,本人为开发环境所使用的容器定义了 ulimits,如下所示:
配置似乎没有问题,但通过 SSH 连接到容器查看 ulimit,得知限制仍是默认值(1024)
于是进行了进一步排查,发现限制是从 sshd 进程开始附加的:
由于 SSH 通过 PAM 进行用户认证,所以该限制很可能是由 PAM 模块默认配置附加的,最终影响到了ulimit。

解决方案

经过测试,确实与 SSH 的 PAM 配置有关,执行以下命令即可解除限制:
  • 补充:除了 PAM 的限制,还包含 systemD 的限制,还需要修改关于 systemD 的配置。

下一篇

华为擎云 W510 折腾记

Loading...