You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Suse Linux 15 SP2中限制文件描述符始终小于1024?

SUSE Linux 15 SP2 文件描述符编号小于1024配置方案

select系统调用的官方限制说明翻译如下:

警告:select() 只能监视编号小于 FD_SETSIZE(默认值为1024)的文件描述符,对于很多现代应用来说这个限制过低,且该限制不会被修改。所有现代应用应当改用 poll(2) 或者 epoll(7),这两个接口不存在该限制。

SUSE Linux 15 SP2 存在对应的配置方法,可以实现内核始终生成编号小于1024的文件描述符,具体操作如下:

配置方法

  • 全局永久生效配置

    编辑/etc/security/limits.conf文件,添加如下两行配置:

    * soft nofile 1024
    * hard nofile 1024
    

    保存后重启系统即可生效。内核分配文件描述符遵循最小可用原则,当进程的文件描述符上限被限制为1024时,最大可分配的文件描述符编号为1023,自然不会出现超过1024的情况。

  • 单进程临时生效配置

    若不需要全局修改,仅需要针对特定进程做限制,可在启动目标进程前,在当前shell执行命令:
    ulimit -n 1024
    再启动目标进程即可,该限制仅对当前shell会话及其子进程生效。

补充说明

之所以仅在AWS EC2实例上会遇到文件描述符超过1024的问题,是因为AWS EC2默认的系统镜像会将进程的文件描述符上限默认调整为65535甚至更高,进程打开文件数超过1023后自然会拿到大于等于1024的文件描述符;而非AWS环境默认的文件描述符上限通常为1024,因此不会触发该问题。

注意:上述配置仅为兼容依赖select()的老旧代码的临时解决方案,select()的1024限制本质是glibc编译期的FD_SETSIZE常量限制,即便调整了内核配置,只要程序编译时使用的FD_SETSIZE为1024,传入超过范围的文件描述符依然会导致内存越界、逻辑异常等问题。长期方案建议将代码中的select()调用替换为poll()或者epoll,彻底解决该限制问题。

内容的提问来源于stack exchange,提问作者Meraj Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:36:03