Linux下文件数限制:临时用`ulimit-n`,永久修改按系统类型:Systemd编辑`/etc/systemd/system.conf`,SysVinit编辑`/etc/security/limits.conf`,用户级写入`~/.bashrc`。调整需合理,避免过高导致性能下降。
其实,很多人在 Linux 下做高并发服务或者跑数据库时,都会遇到一个烦心事儿——打开文件数的限制。系统默认的 1024 个文件描述符,对于稍微正经点的应用来说,简直是“紧箍咒”。别慌,这事说难不难,但也有一些门道需要注意。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
要搞清楚当前系统对你“关了多少扇门”,最直接的办法就是打开终端,敲一句:ulimit -n。这时候屏幕上大概率回显一个类似 1024 的数字。没错,这就是你的应用最多能同时打开的**文件句柄数**——对很多服务来说,这远远不够。
如果你只是想临时救个急,比如跑个测试或者临时调整一下,可以这样操作:
ulimit -n <新的限制值>把 <新的限制值> 换成你想要的数字,比如 ulimit -n 2048。不过必须泼盆冷水:这个改动只在当前终端窗口有效,一旦你关掉终端或者重启系统,一切都会回到解放前。
那么,想彻底根治这个问题,怎么弄?这就得看你的系统“底子”了。
如果你的系统是跑在 Systemd 上的(比如 Ubuntu 16.04 以上的版本),那得直接动 /etc/systemd/system.conf 这个文件。在里面找到或者直接添加这么一行:
DefaultLimitNOFILE=<新的限制值>保存退出之后,别忘了执行 sudo systemctl daemon-reload 让配置生效。这个办法影响的是系统全局拉起的服务。
对于还在用老派 SysVinit 的系统(比如 Ubuntu 14.04 那一代),惯例是去编辑 /etc/security/limits.conf。加上这两行:
* soft nofile <新的限制值>
* hard nofile <新的限制值>这里 soft 是软限制,hard 是硬限制——通常软限制不能超过硬限制。改完之后,重新登录或者重启系统才能生效。
如果你只想针对某个特定用户(比如你自己)做一些调整,那可以换个思路。在 ~/.bashrc 里加一行 ulimit -n <新的限制值>。每次打开新终端,这个设置就会自动生效。如果想要影响所有登录用户,那就写到 /etc/profile.d/custom_limits.sh 里,然后记得运行 source ~/.bashrc 或者重新登录。
最后提醒一句:调整打开文件数限制,本质上是在给系统“松绑”。如果你直接把限制调到一个离谱的高值,比如几百万,那可能会让系统内存吃紧,甚至拖慢整体性能。所以,建议根据实际业务需求来设置——既要够用,又要留点余地,这才是专业的做法。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述