`

一个进程能够打开最大文件句柄数的设置

阅读更多

<转自http://www.txwb.com/Article/serverHelp/Linux/200804/11508.html>

在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。

  

  对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more  

  

  在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more    131 24204   57 24244   57 24231   56 24264

  

  其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。ps -aef|grep 24204 mysql  24204 24162 99 16:15 ?    00:24:25 /usr/sbin/mysqld

  

  哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。

  

  但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:ulimit -HSn 4096

  

  以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。(findsun提出的办法比较合理)

分享到:
评论

相关推荐

    linux的最大进程句柄数设置

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

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

    修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...

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

    file-nr 文件中包含三个数字:第一个数字表示已经分配了的文件描述符数量,第二个数字表示空闲的文件句柄数量,第三个数字表示能够打开文件句柄的最大值(跟 file-max 一致)。 此外,Linux 系统中还存在 ulimit ...

    查看哪个进程打开了哪些文件(显示进程打开的文件句柄handle

    总的来说,了解和掌握查看进程打开文件句柄的方法,是提升系统管理能力和解决技术问题的重要技能。通过火绒剑这样的工具,我们可以直观地看到系统中各个进程对文件的操作,这对于优化系统性能、排查问题以及保障系统...

    ZwQuerySystemInformation查找进程文件句柄

    每个打开的文件都会分配一个唯一的句柄,进程通过这个句柄进行读写、关闭等操作。`ZwQuerySystemInformation`结合`SystemProcessInformation`可以揭示进程所持有的所有文件句柄,这对于排查问题、审计文件访问行为...

    windows进程句柄权限控制

    在Windows中,每个对象(如文件、窗口、线程、进程等)都有一个唯一的标识符,称为对象句柄。进程句柄就是进程对这些对象的引用,通过句柄,进程可以访问和操作对象。句柄不仅包含了对象的唯一ID,还包含了访问权限...

    演示ClientSocket反复连接进程句柄数不变

    句柄在操作系统中是资源的抽象,每个打开的网络连接、文件、设备等都需要一个句柄。如果客户端不断地尝试连接但没有正确关闭句柄,句柄就会堆积,最终消耗完系统资源。 描述中提到的“服务端不存在或没开启时”,...

    关闭进程打开的句柄

    句柄是系统分配给特定对象(如文件、进程、线程、互斥体、事件和信号量)的一个唯一标识符,它允许一个进程对另一个进程创建的资源进行访问和控制。"关闭进程打开的句柄"这一主题主要关注如何获取并关闭其他程序创建...

    列出打开了某个文件句柄handle的进程,找出谁在使用某个文件.zip

    这个"列出打开了某个文件句柄的进程,找出谁在使用某个文件.zip"的主题,就是关于如何在编程环境中(可能是C++,因为文件列表中有Cpp文件)查找并显示那些持有一个特定文件句柄的进程。 在Windows API中,有几个关键...

    易语言取窗口进程线程句柄等源码

    窗口句柄是Windows API中用于标识窗口的一个特殊值,它是一个无符号长整型数,由操作系统分配给每个窗口。在易语言中,通过调用API函数如`FindWindow`或`FindWindowEx`可以获取特定窗口的句柄。这通常需要指定窗口...

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

    在Unix和Linux操作系统中,系统资源的管理是一个关键任务,其中就包括了限制一个用户或进程可以打开的最大文件数。这个限制通常被称为“最大打开文件数”,它由`ulimit`命令来控制。`ulimit -n`命令用于查看或设置一...

    枚举当前系统的所有已打开文件的句柄handle及句柄对应的文件路径.zip

    首先,枚举已打开文件的句柄通常需要用到Windows API中的`NtQuerySystemInformation`函数,这是一个非常底层的系统调用,用于获取各种系统信息。它需要一个系统信息类(System Information Class)作为参数,如`...

    枚举进程句柄.rar

    这个"枚举进程句柄.rar"文件包含了一个用Delphi编写的示例程序,它展示了如何枚举并查看指定进程中的文件句柄、Mutex(互斥量)以及注册表句柄。以下是对这些知识点的详细解释: 1. **进程句柄**:在操作系统中,...

    查看哪个文件正在被哪个进程打开,占用中

    这通常涉及到“打开文件”和“文件句柄”的概念。文件句柄是操作系统用来标识和访问文件的一种机制,它是一个非零整数值,用于在内部跟踪和管理文件。以下是一些关于如何查看文件被哪个进程占用以及如何处理此类问题...

    进程取句柄

    - **资源管理**:例如,一个进程可能需要关闭其他进程打开的文件,这时就需要获取目标进程的句柄。 3. **易语言的句柄操作** 易语言是一种简单易学的编程语言,尤其适合初学者。在易语言中,获取和使用进程句柄...

    MFC枚举进程内核句柄

    本项目“MFC枚举进程内核句柄”正是基于MFC构建的一个实用工具,它能够枚举并显示指定进程中的所有内核句柄信息,类似于知名的系统调试工具如XT或Process Explorer。 首先,我们需要理解什么是内核句柄。在Windows...

    HandleLook进程句柄查看

    在Windows中,句柄是一个数值,代表一个特定的对象,如文件、窗口、设备驱动或进程等。每个句柄都具有唯一性,且与特定对象关联,通过句柄,应用程序可以安全地操作这些对象而无需知道其底层的详细信息。HandleLook...

    得到指定进程所占用的句柄数_NtQueryInformationProcess第二个参数为20.zip

    在提供的压缩包文件中,我们可以看到一些C++相关的源代码文件,如`.h`头文件和`.cpp`源文件,这可能是一个简单的C++项目,用于演示如何实现获取进程句柄数的功能。文件`t3.cpp`和`t3Dlg.cpp`可能是主程序和对话框类...

    LJC.rar_句柄_进程句柄

    例如,一个进程可能有用于输入/输出操作的句柄,用于打开的文件或网络连接的句柄,以及其他系统资源的句柄。通过句柄,操作系统可以精确地控制哪些进程能访问哪些资源,以及如何访问。 "LJC.exe"很可能是一个应用...

Global site tag (gtag.js) - Google Analytics