Linux系统最大打开文件数量配置

前言

这个参数的配置会影响到系统的进程和性能瓶颈。工作中比较常用。
linux系统对文件打开的数量有最大的限制,通常设置为1024,但很容易达到。容易造成系统程序或者系统的瓶颈。
因此,本文从进程本身和系统上说明如何更改linux最大文件数的限制

概念:分为当前进程和系统最大文件数。

系统的最大文件数指的是所有进程可以打开的文件数量总和。

查看当前进程的最大打开文件数量 ulimit -n ,ulimit -a

仅查看最大文件打开数
[root@iZuf6i5xnizusxj9442j52Z ~]# ulimit -n
65535

查看所有的
[root@iZuf6i5xnizusxj9442j52Z ~]# 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) 14366
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) 14366
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

-a参数可以展示出详细的参数,即我们可以对什么资源做限制。

这里的限制有两种类型:soft & hard。
hard资源限制意味着是物理限制;
soft资源限制是由用户进行管理的,soft的最大值由hard来限制。

系统资源被定义在***/etc/security/limits.conf***的文件中,当我们使用ulimit的时候,就是在使用这个文件里定义的值。

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

#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

查看当前系统的最大文件打开数量

[root@iZuf6i5xnizusxj9442j52Z ~]# cat /proc/sys/fs/file-max 
366453

ulimit

ulimit是一个可以设置或者汇报当前用户资源限制的命令。
使用ulimit命令需要有管理员权限,它只能在允许使用shell进行控制的系统中使用。它已经被嵌入到shell当中了。

ulimited 表示资源可无限使用 系统的资源。

如上图的显示结果,列举一些常用的参数

查看

ulimit -c # 查看core file文件的最大值
ulimit -d # 查看数据段的最大值
ulimit -e # 查看当前用户的最大调度优先级
ulimit -s # 当前用户的最大栈大小
ulimit -u # 当前用户的最大进程数
ulimit -v # 查看虚拟内存的大小
ulimit -b # 查看socket buffer的大小
ulimit -t # 查看每个进程允许运行的时间
ulimit -n # 查看一个进程可以最多有多少文件描述符

配置

-H 设置硬资源限制.
-S 设置软资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes
-u <程序数目>  用户最多可开启的程序数目

修改进程的最大打开文件数量

临时修改 ulimit -n 数值

只在当前的shell生效,再打开其他shell,查看数值不变。

[root@iZuf6i5xnizusxj9442j52Z ~]# ulimit -n 1024
[root@iZuf6i5xnizusxj9442j52Z ~]# ulimit -n 
1024

永久修改

[root@iZuf6i5xnizusxj9442j52Z ~]# echo "* soft nofile 1024" >> /etc/security/limits.conf 

[root@iZuf6i5xnizusxj9442j52Z ~]# cat /etc/security/limits.conf  | tail -16

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file
root soft nofile 65535
root hard nofile 65535
#* soft nofile 65535
* hard nofile 65535
* soft nofile 1024
* soft nofile 1024
[root@iZuf6i5xnizusxj9442j52Z ~]# 
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux的Socket最大连接数量取决于多个因素,包括操作系统、硬件配置和进程限制。 在Linux操作系统中,Socket的最大连接数量由操作系统的内核参限制。该参通常称为`somaxconn`(Socket拥塞连接的最大目)。该参的默认值通常是128,但可以通过修改内核参进行调整。 除了上述操作系统限制外,还有一些因素可能会影响Socket的最大连接数量。首先,服务器的硬件配置(如网络带宽、内存和处理能力)可以限制可以支持的最大连接数量。其次,服务器的编程实现和网络架构也可能对Socket连接产生影响。 此外,每个进程还有自己的连接限制。例如,对于单个进程使用IPv4协议,可以使用`ulimit`命令来限制连接数量。通过更改`ulimit`值,可以增加或减少进程所能支持的Socket连接数量。 总而言之,Linux操作系统中的Socket最大连接数量是一个复杂的问题,取决于多个因素。在实际应用中,需要考虑操作系统内核参、硬件配置、进程限制和网络架构等因素,以确定最佳的Socket连接配置。 ### 回答2: Linux的socket连接数量是没有固定的上限的,它主要取决于系统的资源限制配置。 一般来说,Linux默认的最大连接数量是由文件描述符限制决定的。文件描述符(File Descriptor)是操作系统为了管理打开的文件和socket而分配的一种资源,它以整的形式标识着这些文件和socket。在Linux中,每个进程都有一定数量文件描述符,它们是有限的。可以通过ulimit命令查看当前用户的文件描述符限制。 socket连接数量受到可用的文件描述符数量限制。当一个进程发起socket连接时,操作系统会为它分配一个文件描述符,所以如果系统中的文件描述符被其他进程占满了,新的socket连接就会失败。为了提高系统的性能,可以通过修改文件描述符限制来增加最大连接数量。可以通过修改/etc/security/limits.conf文件或者使用ulimit命令来修改文件描述符限制。 此外,还可以修改内核参来增加最大连接数量。在Linux中,可以通过修改/proc文件系统的某些文件或者使用sysctl命令来修改内核参。常见的与最大连接数量相关的内核参有somaxconn,它表示系统监听的最大连接队列的大小;以及net.ipv4.tcp_max_syn_backlog,它表示系统SYN队列的最大长度。调整这些参可以增加系统最大连接数量。 综上所述,Linux的socket最大连接数量是没有固定的上限的,但受到系统资源限制配置的影响。可以通过调整文件描述符限制和内核参来增加最大连接数量。 ### 回答3: Linux中,socket的最大连接数量受到操作系统限制以及系统资源的影响。Linux系统默认情况下设置了一些限制,但是这些限制通常可以通过修改配置文件或者调用系统来进行调整。 在Linux中,每个进程有一个最大文件描述符限制文件描述符中包括了socket。可以通过ulimit命令来查看当前进程的文件描述符限制。对于普通用户,通常文件描述符限制较低,而对于root用户,则较高。 此外,Linux内核还会限制单个端口上的并发连接数量。这个限制可以在内核中通过修改/proc/sys/net/core/somaxconn文件来进行调整。默认情况下,此限制通常为128,即单个端口上的最大连接数量为128。 另一方面,系统的物理内存和处理器等硬件资源也会对最大连接数量产生影响。如果系统资源有限,例如内存不足,那么最大连接数量可能会受到限制。 总的来说,对于Linux系统而言,最大连接数量不是固定值,而是受到多个因素的影响。可以通过修改操作系统配置、调整内核参、增加硬件资源等方式来提升最大连接数量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值