`

Linux 文件句柄限制分析

阅读更多

 

引之:
在一个工作中的实践项目中,项目是一个部署到 linux下的中间件项目,当收到一个 Client登录的时候,需要为这个 Client打开四个文件,当进行 多用户的大压力测试的时候,程序就出问题了: too many opened files。 网上一查,发现有人也碰到过类似的 socket/File: Can’t open so many files问题。 在此总结一下这个问题,希望对后来之人有点帮助。

解决之法:
1 ulimit -a 查看当前用户的文件句柄限制


    open files (-n) 65535这个就是限制数量。 (65535是我已经修改后的值了,没修改前是1024)

2,修改 /etc/security/limits.conf 增加下面的代码:

你的用户名  soft nofile 65535
你的用户名 hard nofile 65535

 

我们添加了有 soft, hard两种:硬限制是实际的限制,而软限制,是 warnning限制,只会做出 warning。修改时,改成一样就可以了。


3 重启 shell即可。 (有些系统可能需要重启系统 , red hat 的肯定不用的)


4 ulimit -a 查看设置是否成功。

原理分析:
Linux是有文件句柄限制的,而且默认不是很高,一般都是 1024,应用程序很容易就达到这个数量,所以也就有了这篇文章。 ulimi是对单一程序的限制而不是单个用户。

 

查看系统总限制 命令:

cat /proc/sys/fs/file-max

 

查看整个系统目前使用的文件句柄数量命令:

cat /proc/sys/fs/file-nr

 

辅助命令:
查找文件句柄问题的时候,还有一个很实用的程序 lsof,可以很方便看到某个进程开了哪些句柄

lsof -p pid
 

某个进程开了几个句柄

lsof -p pid |wc -l
 

也可以看到某个目录 /文件被什么进程占用了,显示已打开该目录或文件的所有进程信息

lsof path/filename

 

 

  • 大小: 6.4 KB
1
0
分享到:
评论

相关推荐

    Linux文件句柄限制总结

    文件句柄 文章目录文件句柄查看用户级别(nofile)单个进程级别(nr_...关于什么是文件句柄,这里不做讨论,其实linux中没有文件句柄,叫做文件描述符fd 超过最大句柄限制,报错:java.io.IOException: Too many open

    linux的最大进程句柄数设置

    在 Linux 系统中,进程句柄数设置是一个重要的参数,它决定了单个进程能够打开的最大文件句柄数量,包括 socket 连接。系统默认值为 1024,这对于一般的应用来说已经足够使用。但是,对于需要处理大量请求的应用,如...

    linux系统级别的能够打开的文件句柄的数file-max命令.docx

    linux 系统级别的能够打开的文件句柄的数file-max命令 Linux 系统中,file-max 命令用于设置系统级别的能够打开的文件句柄的数量,这个值决定了 Linux 内核可以分配的文件句柄的最大数量。当系统中的文件句柄数量...

    linux 句柄

    在Linux系统中,“句柄”这个术语并不常见,但根据题目描述中的信息,这里提到的“句柄”可能是指进程标识符或文件描述符等资源标识符。在Linux和其他类Unix系统中,句柄通常用来标识一个打开的文件或其他系统资源。...

    linux打开文件数

    除了进程级别的限制,Linux系统本身也有一个总的文件句柄限制,这个限制决定了整个系统能同时打开的最大文件数量。这个值可以通过读取`/proc/sys/fs/file-nr`文件来获取: ```bash cat /proc/sys/fs/file-nr ``` ...

    marmot-cn#readingNotes#设置linux打开文件句柄:proc:sys:fs:file-max和ulimit

    设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是

    Linux下查看进程打开的文件句柄数和如何修改方法

    在Linux中,文件句柄数的限制分为硬限制和软限制两种。 - **硬限制**:系统实际允许的最大值。 - **软限制**:当前用户能够修改的最大值。 调整文件句柄数限制的方法如下: ##### 临时调整 可以使用`ulimit`命令...

    linux 学习--句柄学习

    句柄的概念在很多不同的上下文中都有应用,但在这里我们主要关注它在Linux文件系统中的使用。在这个“Linux学习--句柄学习”的主题中,我们将深入探讨Linux句柄的定义、作用以及如何使用它们。 首先,理解什么是...

    3 种方法教你在 Linux 中修改打开文件数量限制.doc

    文件句柄是操作系统为每一个打开的文件分配的唯一标识,它存储在主内存的一个特定区域,这个区域的大小决定了系统能同时处理多少个文件。由于操作系统需要内存来管理这些句柄,因此对打开文件数量的限制是为了防止...

    linux下文件描述符限制问题

    linux下文件描述符最大限制默认最大为1024,通过 [root@localhost ~]# ulimit -n 1024 这个命令可以查看。此值可以修改。 进程的文件描述符,可以通过 [root@localhost ~]# ls -al /proc/13623/fd |wc -l 59 输出...

    Linux内核调优

    - 在某些情况下,即使按照上述步骤操作后,使用`ulimit -n`命令查看到的文件句柄限制仍未达到预期值。这可能是由于`/etc/profile`文件中的配置冲突所致。 - 查找并删除`/etc/profile`文件中任何使用`ulimit -n`的...

    Linux如何处理文件已删除但空间不释放的问题

    总之,理解Linux文件系统的运作方式以及如何处理已删除文件的空间释放问题是系统管理员必备的技能。通过监控、定位问题文件并采取适当的释放策略,可以有效地管理磁盘空间,确保系统的稳定运行。在日常运维中,应...

    39 案例实战:如何解决经典的Too many connections故障?背后原理是什么.pdf

    这通常是因为Linux的文件句柄限制导致MySQL的最大连接数受到了限制。 Linux系统中用于查看和修改文件句柄限制的命令是ulimit。这个命令可以限制进程对系统资源的使用。例如,ulimit -n 65535 命令可以设置每个进程...

    增加系统的最大打开文件数

    通过这种方式,系统能够支持处理大量并发文件操作的程序或服务,例如高负载的网络服务器或大数据分析应用,它们可能需要同时处理许多文件句柄。了解并适当地调整这些设置对于优化系统性能和避免资源耗尽问题至关重要...

    文件最大数修改

    #### 四、Linux文件句柄限制机制 在Linux系统中,每个用户可同时打开的文件数量是有上限的。这些文件句柄(也称为文件描述符)用于跟踪每个打开的文件或网络连接等资源。 ##### 4.1 查看系统全局最大文件数限制 ...

    Linux文件存在程序找不到文件.pdf

    可以使用`ulimit -n`命令查看当前系统的文件句柄限制,并根据需要调整。如果经常遇到此问题,可能需要优化程序以减少打开的文件数量,或者增加系统允许的最大文件句柄数。 解决这类问题的关键在于排查每个环节,从...

    linux的最大打开文件数限制修改方法

    - **文件句柄**:在操作系统中,文件句柄是指向文件的一个指针,它代表了一个打开的文件。每当程序打开一个文件时,系统都会分配一个唯一的文件句柄给它。 - **软限制(Soft Limit)**:这是由用户通过`ulimit`命令...

    Too many open files 问题的解决.txt

    “Too many open files”错误是由于系统或进程级别的文件句柄限制不足造成的,通过合理调整这些限制,可以有效地避免此类问题,确保应用程序和服务的稳定运行。不过,增加文件句柄限制的同时,也应考虑到系统资源的...

    配置开发支持高并发TCP连接的Linux应用程序

    该限制是因为系统为每个 TCP 连接都要创建一个 socket 句柄,每个 socket 句柄同时也是一个文件句柄。因此,需要修改用户进程可打开文件数限制,以支持高并发 TCP 连接。 修改用户进程可打开文件数限制可以通过 ...

    提高linux并发处理能力.docx

    除了文件句柄限制之外,网络端口的配置也会影响Linux系统的并发处理能力。 ##### 1. 加载模块 通过编辑`/etc/rc.d/rc.local`文件并加入以下内容来确保必要的模块被加载: ```bash # /etc/rc.d/rc.local /sbin/...

Global site tag (gtag.js) - Google Analytics