linux系统limit知识

linux系统limit知识

1. /proc/sys/fs/file-max  设置内核最大的文件句柄数 
2. /proc/sys/fs/nr_open  设置进程最大的文件句柄数,不能超过1
3. /etc/security/limits.conf   “work soft nofile xxxx”设置用户单个进程的最大的文件句柄数,不能超过2,否则ssh无法登录(今天的遇到的坑)。修改limit.conf前可以用 ulimit命令验证一下你将要设置的值是否合法。
4. ulimit -n xxx 该命令只对当前终端有效。

 

1.limit限制每个shell进程和它的子进程对资源的占用。每个登录,还是每个进程?

比如ulimit -n 10240 可以临时改变当前session的shell进程的文件句柄数限制,退出当前窗口后,限制恢复。

要每个shell都生效,添加到系统启动脚本中

也可以在进程启动脚本前添加ulimit -n 命令 

2.修改 /etc/security/limits,可以设置用户级别的限制,包括软限制和硬限制

3. /proc/sys/fs/file-max,可以设置系统级别的限制

 

应用:修改网络连接数限制

1、修改用户进程可打开文件数限制
最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)
查看进程打开文件描述符  /proc/1234/fd
 
2.修改tcp参数设置net.ipv4.ip_local_port_range
每个TCP客户端连接都要占用一个唯一的本地端口号(此端口号在系统的本地端口号范围限制中),如果现有的TCP客户端连接已将所有的本地端口号占满,则此时就无法为新的TCP客户端连接分配一个本地端口号了,因此系统会在这种情况下在connect()调用中返回失败,并将错误提示消息设为“Can't assignrequested address”
 

 

http://blog.csdn.net/wh0426/article/details/52311683

1./etc/security/limits.conf中指定的nofile的值,nofile有上限,不是无穷大。nofile由内核参数nr_open定义的.

“在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可以通过/proc/sys/fs/nr_open来设置。”

2.使用cat /proc/sys/fs/nr_open 查看nr_open值,可通过修改/ect/sysct.conf 修改fs.nr_open值,sysctl -p生效

3.fix_max linux内核定义的最大file handles(文件句柄数).nr_open定义是单进程最大file-handles,file-handles(即文件句柄)

4./proc/sys/fs/file-nr 记录系统中fd的使用情况,已分配文件句柄的数目 

 

file-max:
The value in file-max denotes the maximum number of file-
handles that the Linux kernel will allocate. When you get lots
of error messages about running out of file handles, you might
want to increase this limit
 
 
nr_open:
This denotes the maximum number of file-handles a process can
allocate. Default value is 1024*1024 (1048576) which should be
enough for most machines. Actual limit depends on RLIMIT_NOFILE
resource limit.
 
 

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

 

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

 

posted on 2016-12-04 23:10 zlingh 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zlingh/p/6132333.html

你可能感兴趣的:(linux系统limit知识)