`
kfcman
  • 浏览: 396939 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

linux下修改进程打开文件数限

 
阅读更多

使用ulimit -a查看相关消息。

1,linux 默认的进程打开文件上限是1024个,可以通过ulimit -n查看。很多系统上限可以通过修改/etc/security/limits.conf文件改变,这个文件有详细的注释,对如何修改做了说明。如果希望 把所有用户的进程打开文件上限改为65536,可以加入下面两行

* soft nofile 8192
* hard nofile 8192
还可以只真对某个用户或某个组做修改,具体方法参见文件注释。修改后需要重新启动系统才能生效

或者
ulimit -HSn 8192

2,在Linux内核2.2.x中可以用如下命令修改:

  # echo '8192' >; /proc/sys/fs/file-max
  # echo '32768' >; /proc/sys/fs/inode-max
 
并将以上命令加到/etc/rc.c/rc.local文件中,以使系统每次重新启动时配置以上值。

3,在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 把上面命令加到最后

 

分享到:
评论

相关推荐

    修改linux进程可打开的文件数的限制open files

    修改linux进程可打开的文件数的限制open files linux中一切都是文件 默认linux一个进程可打开1024个文件 大并发需要达到5万个文件描述符FD,你必须修改该参数值才行

    linux打开文件数

    在Linux系统中,对文件的管理是其核心功能之一,其中“打开文件数”是一个重要的概念,涉及到系统资源管理和性能优化。本文将深入探讨Linux如何管理打开文件数,包括查看当前打开文件数的方法、理解系统限制以及如何...

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

    例如,要限制所有用户的最大打开文件数,可以在`limits.conf`文件中添加一行`* soft nofile 2048`。这里的`*`代表所有用户,`soft`表示软限制,`nofile`表示文件描述符限制,`2048`是限制的数值。硬限制的设置方法...

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

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

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

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

    深入探讨linux下进程的最大线程数、进程最大数、进程打开的文件数

    在Linux操作系统中,进程的资源使用受到多个因素的限制,包括最大线程数、进程最大数以及进程可以打开的文件数。这些限制是由系统内核设定的,旨在保证系统的稳定性和资源的有效分配。 首先,我们来看进程的最大...

    linux的最大进程句柄数设置

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

    Linux下应用程序大打开文件数的理解和修改

    运行在Linux系统上的Java程序运行了一段时间后出现Too many open files的异常情况。  这种情况常见于高并发访问文件系统,多线程网络...文件描述符(file descriptor)作为进程到open files table的指针,也是open

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

    ### Linux 最大打开文件数限制修改方法 #### 前言 在Linux系统中,为了保护系统的稳定性与安全性,每个用户登录系统时所能打开的最大文件数都有一定的限制。这一限制通常默认设置为1024个文件。然而,在一些特定的...

    Linux修改TCP连接数.doc

    "Linux修改TCP连接数" Linux 操作系统中,TCP 连接数的限制是由多个因素决定的,其中包括用户进程可打开的文件数限制、网络端口限制和系统对 TCP 连接的跟踪限制。为了提高 Linux 操作系统中的 TCP 连接数,我们...

    Linux 下应用程序最大打开文件数的理解和修改.docx

    在Linux操作系统中,程序可能会遇到“Too many open files”的错误,这通常意味着某个进程尝试打开的文件数量超过了系统允许的最大限制。这个问题在处理高并发文件访问或大量网络连接(如Socket)的Java程序中尤为...

    Linux下高并发socket最大连接数所受的各种限制

    因此,系统对用户进程可打开文件数量的限制直接影响了最大并发Socket连接数。默认情况下,这个限制通常是1024,可以通过`ulimit -n`命令查看。若要增加这个限制,可以使用`ulimit -n <number>`命令,但需要注意,这...

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

    然而,需要注意的是,修改用户进程可打开文件数限制需要修改 Linux 系统对用户的软限制和硬限制。软限制是指 Linux 在当前系统能够承受的范围内进一步限制用户同时打开的文件数;硬限制则是根据系统硬件资源状况计算...

    linux 下实现对ini文件的读取和写入

    在本文中,我们将深入探讨如何在Linux环境下读取和写入ini文件,包括解析文件结构、提取和修改数据。 1. **文件操作基础** 在Linux中,所有文件操作都是通过标准的文件I/O函数完成的。例如,`fopen()`用于打开文件...

    Linux进程文件1

    这种共享机制在某些情况下可能带来问题,比如,如果一个进程关闭了文件描述符,而另一个进程还在使用,那么内核不会立即释放相应的打开文件表项。只有当所有拥有该文件描述符的进程都关闭它时,内核才会删除表项并...

    嵌入式开发教程之linux进程与它的文件描述符--千锋培训

    四、文件描述符与lsof命令:`lsof`是一个强大的命令行工具,用于列出当前系统中打开的文件,包括由哪些进程打开、对应的文件描述符以及相关的详细信息。它可以用于监控系统的资源使用情况,排查问题,比如找出哪个...

    Linux修改TCP连接数.txt

    在Linux系统如何修改TCP连接数,文件数限制修改、网络端口限制修改;修改用户进程可打开文件数限制;修改网络内核对TCP连接的有关限制;使用支持高并发网络I/O的编程技术

    LINUX进程管理实验

    `fork()`会创建一个与父进程几乎完全相同的子进程,子进程继承父进程的数据段、堆和栈的读写权限,但不继承父进程打开的文件描述符和未完成的系统调用。在实验中,通过调用两次`fork()`函数,成功创建了一个父进程和...

Global site tag (gtag.js) - Google Analytics