这篇文章主要为大家展示了“怎么在Linux服务器上设置ulimit和文件描述符数限制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么在Linux服务器上设置ulimit和文件描述符数限制”这篇文章吧。
要在 Linux 服务器上得到打开文件数的限制,请执行以下命令,
[root@ubuntu ~]# cat /proc/sys/fs/file-max146013
上面的数字表明用户可以在每个用户登录会话中打开 ‘146013’ 个文件。
[root@centos ~]# cat /proc/sys/fs/file-max149219[root@debian ~]# cat /proc/sys/fs/file-max73906
这清楚地表明,各个 Linux 操作系统具有不同的打开文件数限制。这基于各自系统中运行的依赖关系和应用程序。
顾名思义,ulimit
(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a
选项运行 ulimit
命令时,它将打印登录用户的所有资源限制。现在让我们在 Ubuntu/Debian 和 CentOS 系统上运行 ulimit -a
,
shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
正如我们可以在这里看到的,不同的操作系统具有不同的限制设置。所有这些限制都可以使用 ulimit
命令进行配置/更改。
要显示单个资源限制,可以在 ulimit
命令中传递特定的参数,下面列出了一些参数:
ulimit -n
–> 显示打开文件数限制
ulimit -c
–> 显示核心转储文件大小
umilit -u
–> 显示登录用户的最大用户进程数限制
ulimit -f
–> 显示用户可以拥有的最大文件大小
umilit -m
–> 显示登录用户的最大内存大小
ulimit -v
–> 显示最大内存大小限制
使用以下命令检查登录用户打开文件数量的硬限制和软限制:
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
让我们假设我们的 Linux 服务器已经达到了打开文件的最大数量限制,并希望在系统范围扩展该限制,例如,我们希望将 100000 设置为打开文件数量的限制。
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
上述更改将在下次重启之前有效,因此要使这些更改在重启后仍存在,请编辑文件 /etc/sysctl.conf
并添加相同的参数,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
保存文件并退出。
运行下面命令,使上述更改立即生效,而无需注销和重新启动。
root@ubuntu~]# sysctl -p
现在验证新的更改是否生效。
root@ubuntu~]# cat /proc/sys/fs/file-max100000
使用以下命令找出当前正在使用的文件描述符数量:
[root@ansible ~]# more /proc/sys/fs/file-nr1216 0 100000
注意:命令 sysctl -p
用于在不重新启动和注销的情况下提交更改。
/etc/sysctl.conf
文件用于设置系统范围的资源限制,但如果要为 Oracle、MariaDB 和 Apache 等特定用户设置资源限制,则可以通过 /etc/security/limits.conf
文件去实现。
示例 limits.conf
如下所示,
root@ubuntu~]# cat /etc/security/limits.conf
假设我们要为 linuxtechi 用户设置打开文件数量的硬限制和软限制,而对于 oracle 用户设置打开进程数量的硬限制和软限制,编辑文件 /etc/security/limits.conf
并添加以下行:
# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024 # hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096
保存文件并退出。
注意: 如果你想对一个组而不是用户进行资源限制,那么也可以通过 limits.conf
文件,输入 @<组名>
代替用户名,其余项都是相同的,示例如下,
# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024
验证新的更改是否生效:
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024 ~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
注:其他主要使用的命令是 lsof,可用于找出“当前打开了多少个文件”,这命令对管理员非常有帮助。
以上是“怎么在Linux服务器上设置ulimit和文件描述符数限制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。