配置了最大连接数 65535,但是/etc/rc.local 里的没生效 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
whx20202
V2EX    Linux

配置了最大连接数 65535,但是/etc/rc.local 里的没生效

 
  •   whx20202 2017-10-27 23:14:15 +08:00 6359 次点击
    这是一个创建于 2937 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就是我按照网上的说法,在 /etc/security/limits.conf 里面,配置了以下内容

    * soft nofile 65535
    * hard nofile 65535
    root soft nofile 65535
    root hard nofile 65535

    然后我登录环境,ulimit -n 执行结果也确实是 65535,
    然后我在开机启动脚本 /etc/rc.local 启动 TcpRoute2 代理软件,结果这个进程起来之后 最大 fd 是 1024,提示 too many open files
    我手动重启 TcpRoute2,这个进程的最大 fd 就是 65535 了,问题规避

    通过查看 http://www.jb51.net/article/97706.htm ,我发现了原因:
    1、这个限制是针对单个程序的限制
    2、这个限制不会改变之前已经运行了的程序的限制
    3、对这个值的修改,退出了当前的 shell 就会消失
    比如说,我先运行了一个程序 A,然后通过 ulimit 修改了限制为 2048,然后运行 B,然后退出了 shell 再登录,然后运行 C。那就只有 B 可以打开 2048 个句柄。

    那么我有几个小问题,希望大家指点一下:
    1. 如果我就要开机启动脚本里面,启动的进程就是 65535,怎么办呢?或者是规范的做法是什么呢?
    2. @GameXG 就算用户不设置 65535,代码里面可以申请 65535 个 fd 吗?总感觉默认 1024 不够用,毕竟是代理软件
    谢谢
    第 1 条附言    2017-10-28 09:56:56 +08:00
    谢谢各路大神,花式解决
    学到了好几种方法!
    16 条回复    2017-11-03 22:01:56 +08:00
    anjunecha
        1
    anjunecha  
       2017-10-27 23:30:58 +08:00 via iPhone
    什么系统咯?如果是 centos7 的话我记得有一个地方是要更改的
    whx20202
        2
    whx20202  
    OP
       2017-10-27 23:34:23 +08:00
    @anjunecha Ubuntu 16.04
    anjunecha
        3
    anjunecha  
       2017-10-27 23:37:57 +08:00 via iPhone   1
    @whx20202 应该是 systemd 的原因,你可以查查相关的资料看看
    pkking
        4
    pkking  
       2017-10-28 00:20:59 +08:00   1
    prlimit -n xxx -p pid
    whx20202
        5
    whx20202  
    OP
       2017-10-28 00:27:59 +08:00
    @pkking 这个要在启动 TcpRoute2 之后,给进程 pid 用上吗?
    artandlol
        6
    artandlol  
       2017-10-28 03:53:39 +08:00   1
    {
    echo "* soft nproc 65535" > /etc/security/limits.d/90-nproc.conf
    echo "* hard nproc 65535" >> /etc/security/limits.d/90-nproc.conf
    echo "* soft nofile 65535" >> /etc/security/limits.d/90-nproc.conf
    echo "* hard nofile 65535" >> /etc/security/limits.d/90-nproc.conf
    }
    lesteryu
        7
    lesteryu  
       2017-10-28 06:58:24 +08:00   1
    用 systemd 的服务不会加载 limits.conf,得在 systemd 服务的配置里改。

    *. 可以试一下 sudo systemctl edit rc-local.service,然后添加:
    [Service]
    LimitNOFILE=65536

    *. 更好的方法是把 TcpRoute2 做成一个单独的 systemd 服务,然后设置 LimitNOFILE。
    ryd994
        8
    ryd994  
       2017-10-28 07:56:48 +08:00 via Android   1
    好好用 systemd 服务文件,不要用 rclocal 来启动服务
    rclocal 就是给你启动时自动写点参数用的而已
    julyclyde
        9
    julyclyde  
       2017-10-28 08:55:24 +08:00   1
    哈哈哈,常见错误

    /etc/security/limits.conf 是 pam_limits.so 的配置文件,一般只有在“登录”的时候才执行,用于从(login/sshd)+pam_limits.so 的 root 身份降级到普通用户之前,设置好 rlimits

    而你这个根本就没有登录这个动作
    gamexg
        10
    gamexg  
       2017-10-28 17:46:30 +08:00
    2. 记得高点的 linux 内核版本支持,不过目前版本的 tcproute 不再增加功能了,下一个版本会直接重写,目前只完成了一部分,全部完成会比较久...
    yesono
        11
    yesono  
       2017-10-29 08:39:36 +08:00
    chmod +x /etc/rc.local
    tangbao
        12
    tangbao  
      &bsp;2017-10-29 18:19:15 +08:00
    我遇到过类似的坑 想开机跑一些脚本 但是 rc.local 添加进去后没有反应

    lz 你试试在你的命令前面添加一个 sleep 10s 让系统完全启动了以后再运行这个脚本试试
    julyclyde
        13
    julyclyde  
       2017-10-30 15:09:55 +08:00
    @tangbao sleep 不可能有效的,别想了
    tangbao
        14
    tangbao  
       2017-10-30 16:50:58 +08:00
    @julyclyde 我的不可描述 Server 就是加了 sleep 启动的啊
    julyclyde
        15
    julyclyde  
       2017-10-30 16:56:40 +08:00
    @tangbao 时间上的相关关系并不等于因果关系
    tangbao
        16
    tangbao  
       2017-11-03 22:01:56 +08:00
    @julyclyde 但是我启动不了的服务的确加了 Sleep 后就能启动了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2991 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 94ms UTC 12:31 PVG 20:31 LAX 04:31 JFK 07:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86