Linux资源限制之句柄数limit

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/AMimiDou_212/article/details/92800144

一、limit浅析之inode

inode 或i节点是指对文件的索引,即属性记录目录。如一个系统,所有文件是放在磁盘或flash上,就要编个目录来说明每个文件在什么地方,有什么属性,及大小等。就像书本的目录一样,便于查找和管理。这目录是操作系统需要的,用来找文件或叫管理文件。许多操作系统都用到这个概念,如linux, 某些嵌入式文件系统等。当然,对某个系统来说,有许多i节点。所以对i节点本身也是要进行管理的。

在linux中,内核通过inode来找到每个文件,但一个文件可以被许多用户同时打开或一个用户同时打开多次。这就有一个问题,如何管理文件的当前位移量,因为可能每个用户打开文件后进行的操作都不一样,这样文件位移量也不同,当然还有其他的一些问题。所以linux又搞了一个文件描述符(file descriptor)这个东西,来分别为每一个用户服务。每个用户每次打开一个文件,就产生一个文件描述符,多次打开就产生多个文件描述符,一一对应,不管是同一个用户,还是多个用户。该文件描述符就记录了当前打开的文件的偏移量等数据。所以一个i节点可以有0个或多个文件描述符。多个文件描述符可以对应一个i节点。

1.1 limit 怎么进行修改

最近在搞RabbitMQ 集群(一种消息中间件),遇到了个是就是每次打开的句柄数很少默认1024,可以使用 ulimit -n 查看你当前系统的nofile 数:

	[root@rabbit1 ~]# ulimit -n
	1024

file descriptors
想要修改文件句柄数,有两种方式

方法一 、使用 ulimit -n number(期待的句柄数)
 [root@rabbit1 ~]# ulimit -n 65536
 [root@rabbit1 ~]# ulimit -n
 65536		

此时,只需要重新启动你的RabbitMQ 即可生效,但是重启后失效。

update_set

方法二、通过修改配置文件,永修生效

1.修改文件 /etc/sysctl.conf


  [root@rabbit1 ~]# cat /etc/sysctl.conf
  # System default settings live in /usr/lib/sysctl.d/00-system.conf.
  # To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
  #
  # For more information, see sysctl.conf(5) and sysctl.d(5).
  fs.file-max=1610391    #number 修改需要的
  [root@rabbit1 ~]# sysctl -p
  fs.file-max = 1610391

2.修改limit 配置文件 vim /etc/security/limits.conf

  [root@rabbit1 ~]# tail -n 15 /etc/security/limits.conf
  root             soft  nproc    655350  #soft 进程数
  root             hard  nproc    655350  #hard 进程数
  root             soft  nofile   6555    #soft 文件句柄数
  root             hard  nofile   6555    #hard 文件句柄数  
  # End of file
  [root@rabbit1 ~]#
  ** 注: root 可以写成 * 即所有用户,同时也可以指定具体用户名,如rabbitmq

退出当前用户登录,重新登陆终端,并重新重启 RabbitMQ 将会永久生效。

  [root@rabbit1 ~]# ulimit -n
  6555

通过重新登录Web UI 查看当前的file 、Socket 句柄数都相应的得到了扩展。
Successed
到此,也就简单的介绍了Linux 系统修改句柄数的方法。热爱分享、交流。欢迎讨论!

猜你喜欢

转载自blog.csdn.net/AMimiDou_212/article/details/92800144