Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
initialdp
V2EX  ›  Linux

请教问题: Linux 下的 fd 数目限制

  •  
  •   initialdp · Sep 26, 2018 · 3072 views
    This topic created in 2822 days ago, the information mentioned may be changed or developed.
    最近遇到一个奇怪的问题:
    在命令行中手工启动某个程序,检查 /proc/xxxx/fd 目录, 能查到 1236 个 socket 句柄。
    如果在 rc.local 中启动启动同样一个程序,检查 /proc/xxxx/fd 目录,只能查到 1024 个 socket 句柄。

    用 ulimit -a 检查了 root 用户和当前用户的配置,都已经设置成了 65535.
    root@Debian:/proc/3784/fd# ulimit -a
    core file size (blocks, -c) 0
    data seg size (kbytes, -d) unlimited
    scheduling priority (-e) 0
    file size (blocks, -f) unlimited
    pending signals (-i) 16124
    max locked memory (kbytes, -l) 64
    max memory size (kbytes, -m) unlimited
    open files (-n) 65535
    pipe size (512 bytes, -p) 8
    POSIX message queues (bytes, -q) 819200
    real-time priority (-r) 0
    stack size (kbytes, -s) 8192
    cpu time (seconds, -t) unlimited
    max user processes (-u) 16124
    virtual memory (kbytes, -v) unlimited
    file locks (-x) unlimited


    这是什么情况呢? 有 v 友遇到过类似的问题吗? 似乎 rc.local 启动程序,使用了不同的资源限制? 系统是 Debian 7。

    谢谢!
    Supplement 1  ·  Sep 26, 2018
    root@Debian:~# cat /proc/sys/fs/file-max
    206370
    Supplement 2  ·  Sep 26, 2018
    大概知道这个问题是什么原因导致的。

    rc.local 在 /etc/security/limits.conf 生效之前就启动了,因此在 rc.local 中默认还是 1024 的限制。limits.conf 只有在*登录*之后才生效。

    解决方式也比较简单:在 rc.local 中直接指定 ulimit -n 65535 即可。
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2578 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 218ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    ♥ Do have faith in what you're doing.