Linux最大文件打开数

介绍

在Linux下有时会遇到Socket/File : Can‘t open so many files的问题。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈。

1.查看方法

使用ulimit -a 或者 ulimit -n

open files (-n) 1024 是linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量)

这里只是对用户级别的限制,其实还有个是对系统的总限制,查看系统总线制:

# cat /proc/sys/fs/file-max

man proc,可得到file-max的描述:

/proc/sys/fs/file-max
              This  file defines a system-wide limit on the number of open files for all processes.  (See
              also setrlimit(2),  which  can  be  used  by  a  process  to  set  the  per-process  limit,
              RLIMIT_NOFILE,  on  the  number  of  files it may open.)  If you get lots of error messages
              about running out of file handles, try increasing this value:

即file-max是设置系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。

也就是说,这项参数是系统级别的。

2.修改方法

临时生效:

# ulimit -SHn 10000
其实ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,如果运行ulimit 命令修改时没有加上-H或-S,就是两个参数一起改变。

软限制和硬限制的区别?

硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。

永久生效

要想ulimits 的数值永久生效,必须修改配置文件/etc/security/limits.conf
在该配置文件中添加

* soft nofile 65535

* hard nofile 65535

* 表示所用的用户

修改系统总限制

其实上的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。

假如,我们设置进程打开的文件句柄数是1024 ,但是系统总线制才500,所以所有进程最多能打开文件句柄数量500。从这里我们可以看出只设置进程的打开文件句柄的数量是不行的。所以需要修改系统的总限制才可以。

echo  6553560 > /proc/sys/fs/file-max

或修改 /etc/sysctl.conf, 加入

fs.file-max = 6553560 重启生效

时间: 2024-12-26 04:02:36

Linux最大文件打开数的相关文章

linux 修改文件打开数

vi /etc/security/limits.conf 在最后面加入: * soft nofile 65535 * hard nofile 65535 linux 修改文件打开数

linux最大文件打开数和swap限制

linux最大文件打开数和swap限制   逑熙 关注 2017.07.24 15:39* 字数 388 阅读 314评论 0喜欢 0 linux 2.6+的核心会使用硬盘的一部分做为SWAP分区,用来进行进程调度--进程是正在运行的程序--把当前不用的进程调成‘等待(standby)‘,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(active)’,睡眠的进程就躺到SWAP分区睡大觉,把内存空出来让给‘活动’的进程. 如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区,

Linux最大文件打开数使用经验详解

首先普及几个知识: Linux下一切都是文件,包括输入输出设备.网络连接.socket.管道等 与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为file descriptor),文件打开数的实质就是文件描述符的数量 文件打开数的多少取决于系统种类.内存大小,int(语言关键字,如C99的int)长度(非负整数),以及系统管理员的设定 最大文件打开数是针对一个进程而言,即一个进程能打开的文件句柄数目是有限的,不能超过最大文件打开数 ulimit命令只对当前shell有效,因此在编

ulimit命令用来限制系统用户对shell资源的访问(设置Linux文件打开数)

ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小.进程数据块的大小.Shell 进程创建文件的大小.内存锁住的大小.常驻内存集的大小.打开文件描述符的数量.分配堆栈的最大大小.CPU 时间.单个用户的最大线程数.Shell 进程所能使用的最大虚拟内存.同时,它支持硬资源和软资源的限制. 作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话.而对于长期的固定限制

linux下设置最大文件打开数nofile及nr_open、file-max说明

在开发运维的时候我们常常会遇到类似"Socket/File: Can't open so many files","无法打开更多进程",或是coredump过大等问题,这些都可以设置资源限制来解决.今天在教某位客户设置最大文件数方法时,搜索网上的方法时发现各家说法并不一致,便写了这篇文档. 通常对linux某个用户设置系统资源,我们都已经知道可以用ulimit命令来查看和设置. 表 1. ulimit 参数说明 选项 [options] 含义 例子 -H 设置硬资源

解除linux最大进程数和最大文件打开数

说明: linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,可设置各      linux用户的最大进程数和每个进程可打开的文件数 1. 查看Linux的最大进程数和最大打开文件数 : ulimit -a 2. 修改Linux的最大进程数和最大文件打开数 打开vim /etc/security/limits.conf 添加如下内容即可 *       soft    nproc   65535 *       hard    nproc   65535 *      

解除 Linux 系统的最大进程数和最大文件打开数限制

ulimit用于shell启动进程所占用的资源 1.类别: shell内建命令 2.语法格式: ulimit [-acdfHlmnpsStvw] [size] 3.参数介绍: -H 设置硬件资源限制. -S 设置软件资源限制. -a 显示当前所有的资源限制. -c size:设置core文件的最大值.单位:blocks -d size:设置数据段的最大值.单位:kbytes -f size:设置创建文件的最大值.单位:blocks -l size:设置在内存中锁定进程的最大值.单位:kbytes

linux 调整最大文件打开数

vim /etc/security/limits.conf添加以下内容 *       soft    nofile  65535 *       hard    nofile  65535 并添加开机启动 vim /etc/rc.local ulimit -SHn 65535 附nginx进程下检查最大文件打开数脚本 #!/bin/bash for pid in `ps aux | grep nginx | grep -v grep |awk '{print $2}'` do cat /pro

linux c 文件打开并创建代码分析

[[email protected] 03]# cat ex03-open-03.c/*文件ex03-open-03.c,O_CREAT和O_EXCL的使用*/#include #include #include #include int main(void){ int fd = -1; char filename[] = "test.txt"; /*打开文件,如果文件不存在,则报错*/ fd = open(filename,O_RDWR|O_CREAT|O_EXCL,S_IRWXU)