如何在Linux服务器上设置ulimit和文件描述符数限制

这篇文章主要为大家展示了“如何在Linux服务器上设置ulimit和文件描述符数限制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何在Linux服务器上设置ulimit和文件描述符数限制”这篇文章吧。

我们提供的服务有:网站制作、成都网站建设、微信公众号开发、网站优化、网站认证、尼泸西ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的尼泸西网站制作公司

查看任何 Linux 系统中当前打开文件数的限制

要在 Linux 服务器上得到打开文件数的限制,请执行以下命令,

[root@ubuntu ~]# cat /proc/sys/fs/file-max 146013

上面的数字表明用户可以在每个用户登录会话中打开 ‘146013’ 个文件。

[root@centos ~]# cat /proc/sys/fs/file-max 149219 [root@debian ~]# cat /proc/sys/fs/file-max 73906

这清楚地表明,各个 Linux 操作系统具有不同的打开文件数限制。这基于各自系统中运行的依赖关系和应用程序。

ulimit 命令

顾名思义,ulimit(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a 选项运行 ulimit  命令时,它将打印登录用户的所有资源限制。现在让我们在 Ubuntu/Debian 和 CentOS 系统上运行 ulimit -a,

Ubuntu / Debian 系统

shashi@Ubuntu ~}$ 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) 5731 max locked memory       (kbytes, -l) 64 max memory size         (kbytes, -m) unlimited open files                      (-n) 1024       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) 5731 virtual memory          (kbytes, -v) unlimited file locks                      (-x) unlimited

CentOS 系统

shashi@centos ~}$ 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) 5901 max locked memory       (kbytes, -l) 64 max memory size         (kbytes, -m) unlimited open files                      (-n) 1024 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) 5901 virtual memory          (kbytes, -v) unlimited file locks                      (-x) unlimited

正如我们可以在这里看到的,不同的操作系统具有不同的限制设置。所有这些限制都可以使用 ulimit 命令进行配置/更改。

要显示单个资源限制,可以在 ulimit 命令中传递特定的参数,下面列出了一些参数:

  • ulimit -n –> 显示打开文件数限制

  • ulimit -c –> 显示核心转储文件大小

  • umilit -u –> 显示登录用户的最大用户进程数限制

  • ulimit -f –> 显示用户可以拥有的最大文件大小

  • umilit -m –> 显示登录用户的最大内存大小

  • ulimit -v –> 显示最大内存大小限制

使用以下命令检查登录用户打开文件数量的硬限制和软限制:

shashi@Ubuntu ~}$ ulimit -Hn 1048576 shashi@Ubuntu ~}$ ulimit -Sn 1024

如何修复达到最大文件数限制的问题?

让我们假设我们的 Linux 服务器已经达到了打开文件的最大数量限制,并希望在系统范围扩展该限制,例如,我们希望将 100000  设置为打开文件数量的限制。

root@ubuntu~]# sysctl -w fs.file-max=100000 fs.file-max = 100000

上述更改将在下次重启之前有效,因此要使这些更改在重启后仍存在,请编辑文件 /etc/sysctl.conf 并添加相同的参数,

root@ubuntu~]# vi /etc/sysctl.conf fs.file-max = 100000

保存文件并退出。

运行下面命令,使上述更改立即生效,而无需注销和重新启动。

root@ubuntu~]# sysctl -p

现在验证新的更改是否生效。

root@ubuntu~]# cat /proc/sys/fs/file-max 100000

使用以下命令找出当前正在使用的文件描述符数量:

[root@ansible ~]# more /proc/sys/fs/file-nr 1216    0       100000

注意:命令 sysctl -p 用于在不重新启动和注销的情况下提交更改。

通过 limit.conf 文件设置用户级资源限制

/etc/sysctl.conf 文件用于设置系统范围的资源限制,但如果要为 Oracle、MariaDB 和 Apache  等特定用户设置资源限制,则可以通过 /etc/security/limits.conf 文件去实现。

示例 limits.conf 如下所示,

root@ubuntu~]# cat /etc/security/limits.conf

如何在Linux服务器上设置ulimit和文件描述符数限制

Limits-conf-linux-part1

如何在Linux服务器上设置ulimit和文件描述符数限制

Limits-conf-linux-part2假设我们要为 linuxtechi 用户设置打开文件数量的硬限制和软限制,而对于 oracle  用户设置打开进程数量的硬限制和软限制,编辑文件 /etc/security/limits.conf 并添加以下行:

# hard limit for max opened files for linuxtechi user linuxtechi       hard    nofile          4096 # soft limit for max opened files for linuxtechi user linuxtechi       soft    nofile          1024 # hard limit for max number of process for oracle user oracle           hard    nproc          8096 # soft limit for max number of process for oracle user oracle           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 -H 4096 ~]$ ulimit -n -S 1024 ~]# su - oracle ~]$ ulimit -H -u 8096 ~]$ ulimit -S -u 4096

注:其他主要使用的命令是 lsof,可用于找出“当前打开了多少个文件”,这命令对管理员非常有帮助。

以上是“如何在Linux服务器上设置ulimit和文件描述符数限制”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前名称:如何在Linux服务器上设置ulimit和文件描述符数限制
新闻来源:http://scyanting.com/article/jheggi.html