`
NetBus
  • 浏览: 145127 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个进程能够打开最大文件句柄数设到多大才合适(Linux)?

阅读更多

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

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

  1. lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more    

在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:

  1. # lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more    
  2.     131 24204  
  3.      57 24244  
  4.      57 24231  
  5.      56 24264  

其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。

  1. ps -aef|grep 24204  
  2. mysql    24204 24162 99 16:15 ?        00:24:25 /usr/sbin/mysqld  

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

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

  1. ulimit -HSn 4096  

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

分享到:
评论
4 楼 mryufeng 2007-09-27  
开大些 反正不影响性能  开小了就麻烦事情多。

专注 高性能 容错 分布服务器的实现(erlang)
http://mryufeng.iteye.com
3 楼 七猫 2007-09-27  
windows没有这个文件句柄的太多限制,基本上就是内存决定。

win句柄和LINUX的不一样,他好像是个hash表来存储(这部分WIN是开源的),不像linux是个数组。

linux下打开多了应该只要他们不活动,也没什么开销。
2 楼 turan.sh 2007-09-26  
请问:WINDOWS的怎么查看和修改呢?
1 楼 findsun 2007-04-25  
加到~/.bash_profile中只有在用户登录时才有作用,加到/etc/profile中。

相关推荐

    用其他方式打开进程的资源

    2. **进程ID(PID)**:每个进程都有一个唯一的标识符,即进程ID,用于区分系统中的不同进程。 3. **进程的资源**:进程可以拥有各种资源,包括内存、文件描述符、句柄、网络套接字、共享内存、信号量等。这些资源...

    Python多进程写入同一文件的方法

    需要注意的是,在Windows环境下,由于缺乏类似于Linux的`fork`机制,`multiprocessing`库使用另一种方式创建进程,这可能导致文件句柄不能正确地在父进程和子进程之间共享。因此,如果在子进程中尝试访问父进程打开...

    Linux_6静默安装Oracle_11g_R2.pdf

    Linux环境下安装Oracle数据库是一个涉及多个步骤和技术细节的过程。在Oracle 11g R2的安装中,特别是在Linux操作系统上,需要安装一系列依赖包、配置系统环境变量、创建用户和目录、修改系统配置等关键步骤。以下是...

    高并发TCP连接时处理方法

    这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制。 解决高并发TCP连接问题的方法有两个:一个是增加系统对端口...

    干干净净杀死进程

    在IT行业中,"干干净净杀死进程"通常指的是在操作系统层面,通过合适的手段终止一个运行中的程序或进程,同时确保其资源得到适当的释放,不会留下任何残留或导致系统不稳定。这个过程涉及到进程管理、内存管理和资源...

    Linux系统上Oracle的安装步骤(正试版)0504.doc

    - **调整资源限制**:Oracle数据库运行需要较大的内存和文件句柄资源,因此需要调整`/etc/security/limits.conf`中的相关参数,如`ulimit -n`(最大打开文件数)、`ulimit -u`(最大进程数)等。 - **配置内核参数...

    Linux上安装Oracle安装手册

    ### Linux上安装Oracle11gR2 图形界面安装手册 #### 一、软件环境配置 **系统环境:** - **操作系统:** CentOS 6.8 ...对于任何希望在Linux环境中部署Oracle数据库的人来说,这是一个宝贵的参考指南。

    DBA不可不知的操作系统内核参数.pdf

    这个参数限制了Linux内核可以分配的最大文件句柄数。当系统频繁出现“文件句柄用尽”的错误时,可能需要增加此限制。在Linux 2.6及更高版本中,即使显示的空闲文件句柄数为0也不必担心,这仅意味着已分配的句柄与...

    Linux 5下Oracle10安装说明

    在Linux 5环境下安装Oracle 10g是一个相对复杂的过程,需要进行一系列的系统准备和配置。以下是对这个过程的详细说明: 1. **系统资源检查**: 在安装Oracle数据库之前,首先需要确保系统满足最低硬件要求。这包括...

    Linux下Oracle 9i图文安装

    在Linux环境下安装Oracle 9i是一项复杂而细致的工作,涉及到多个步骤和系统配置。以下是详细的安装过程和相关知识点: 首先,确保系统环境准备就绪。通过`ifconfig -a | more`命令检查网卡是否正常运行,以及网络...

    Oracle 11g在linux Redhat 6.5安装详解

    通过修改`/etc/security/limits.conf`文件,可以设置Oracle用户的最大可打开文件数和最大可拥有进程数。具体操作步骤如下: ```bash vi /etc/security/limits.conf ``` 在文件末尾添加以下行: ``` oracle soft ...

    操作系统复习题

    - **利用信号量实现互斥**:可以通过设置信号量初值为1,并使用P、V操作来确保同一时刻只有一个进程能够进入临界区。 #### 25. 如何利用信号量实现同步? - **利用信号量实现同步**:可以通过设置信号量初值为0,...

    Python高性能网络编程并发框架研究.pdf

    此外,文件描述符的数量限制也是设计高性能网络服务时需要考虑的因素之一,尤其是在Linux系统中,单个进程能够打开的文件句柄数量通常有一个上限。 5. Python异步网络框架的实现 文档中提到了使用Python实现的异步...

    es性能优化.docx

    - **文件句柄**:增加每个进程可打开的最大文件句柄数,例如设置为 65535。 - **虚拟内存设置**: - `max_map_count`:增加这个值以支持更多的内存映射,例如设置为 262144。 - `mlockall`:设置为 true 可防止 ...

    在3650上安装RedHat Linux及Oracle10.2.0并升级到10.2.0.3 同时创建数据库和导入数据.pdf

    - 更新系统限制,编辑/etc/security/limits.conf和/etc/pam.d/login文件,以允许更多的进程和打开文件。 - 确保SELinux设置为disabled,以避免安装Oracle时遇到权限问题。 - 检查系统已安装的依赖软件包,如gcc、...

    文件的锁定保护系统 源码

    "文件的锁定保护系统 源码"是一个针对这个需求的解决方案,它提供了一种简单易行的方式来确保文件的安全性。下面将详细探讨相关知识点。 1. **文件保护**:文件保护主要是指通过加密、权限设置等方式防止未经授权的...

    oracle 10g linux 安装

    Oracle 10g在Linux下的安装是一个复杂的过程,涉及到多个步骤和系统配置。在Red Hat Linux(RHEL)5环境下,以下是一些关键知识点和详细步骤: 1. **内存和交换分区**:确保你的系统有足够的内存,至少1GB,同时...

    完全退出程序的方法.zip

    "完全退出程序"这一主题涉及到多个方面的知识,包括程序的生命周期、进程管理、内存管理以及用户界面的交互设计。下面将详细阐述这些相关知识点。 首先,程序的生命周期是指从启动到结束的完整过程。在操作系统中,...

    oracle install 11gr2

    添加如下行,限制oracle用户的进程数(nproc)、打开文件数(nofile)和栈大小(stack): - oracle soft nproc 2047 - oracle hard nproc 16384 - oracle soft nofile 1024 - oracle hard nofile 65536 - oracle ...

Global site tag (gtag.js) - Google Analytics