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

Linux打开最大文件句柄数问题

阅读更多

在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的最大进程句柄数设置

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

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

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

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

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

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

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

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

    这个数字说明了一个普通用户能够在一个单独会话中所能打开最大的文件数目。注意。如果是root,以下操作不能使ulimit -n的输出增加。因为用户root用户不受这个ulimit限制。只有普通用户才会受这个限制。

    linux下查看系统进程占用的句柄数方法

    —查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 —-查看当前进程打开了多少句柄数 # lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more 131 24204  57 24244  57 24231 …….. 其中第一...

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

    当文件被打开访问时,操作系统临时分配一个名为文件句柄的数字。主内存的一个特殊区域是为文件句柄预留的,这个区域的大小决定了一次可以打开多少个文件。

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

    Linux⽂件存在程序找不到⽂件 ⽂件存在程序找不到⽂件 1. 编码格式 编码格式 程序运⾏时的编码格式和传输... ⽂件句柄数 ⽂件句柄数 极端情况下,操作系统打开的⽂件句柄数达到上限,没有可⽤的⽂件句柄⽤于打开⽂件。

    Linux磁盘空间被未知资源耗尽的解决方法

    在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。...

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

    在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket...

    linux常用命令脚本.txt

    # 查看当前进程打开了多少个文件句柄呢 lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more # 禁止接收从 DNS 服务器发送过来并包含 googleusercontent 的包 iptables -I INPUT -p udp --sport 53 -m string -...

    linux shell之文件锁

    ) 200>LOCKFILEflock 需要保持打开锁文件,对于第二种使用方式并不方便,而且 -s 方式指定文件句柄可能冲突。好处是不需要显式的解锁,进程退出后锁必然释放。 2. liblockfile1 的 dotlockfile 号称最灵活可靠的...

    opened:检查文件是否在Windows,macOS和Linux上的另一个应用程序中打开

    这将检测到任何具有打开文件句柄的应用程序,但不会检测到已打开,缓冲文件以供显示,然后关闭句柄的应用程序(即可能向用户显示文件但不再打开文件的应用程序)文件的句柄)。 的Unix 在macOS和Linux上Opened使用...

    ORACLE 10.2.0.1 RAC for RedHat AS4 安装(详解)

    3.2.3 最大文件句柄数 75 3.2.4 网络参数 76 3.2.5 Oracle用户能够打开的文件句柄的最大数 77 3.2.6 Oracle用户能够执行的进程的最大数 78 3.3 磁盘管理 79 3.3.1 磁盘分区 79 3.3.2 逻辑盘卷管理 80 3.3.3 LVM术语 ...

    Nginx提示:500 Internal Server Error错误的解决方法.docx

    1. 文件打开句柄太小:在 Linux 下,可以使用 `ulimit -SHn 51200` 命令增加进程打开的文件句柄。 2. 并发连接数太高:可以调整 nginx.conf 的并发设置数,例如将 `worker_connections` 从 1024 调整到 10240。 3. ...

    Weblogic Portal应用环境调优

    一、 修改操作系统文件句柄大小 1 二、 调整JVM启动内存 1 三、 关闭默认搜索引擎 1 四、 数据库连接池调整最佳实践 2 五、 调整TCP接受预备连接数 4 六、 修改日志记录规则 4 七、 打开Novell认证器层次结构缓存 5 ...

    netcat 瑞士军刀 linux windows netcat 瑞士军刀 linux windows

    但是是否释放传输文件打开的句柄了?  3.6 端口数据抓包.  nc -vv -w 2 -o test.txt www. 80 21-15    , command "" unr      3.7 telnet,自动批处理。 ★★★★★我要重点推荐的东西就是这个.  nc ...

    linux内核 0.11版本源码 带中文注释

    #include <linux/fs.h> // 文件系统头文件。定义文件表结构(file,buffer_head,m_inode 等)。 static char printbuf[1024]; // 静态字符串数组。 extern int vsprintf (); // 送格式化输出到一字符串中(在...

    libusb 源码(win32 & linux USB开发)

     这里我们不妨理解为返回的 usb_dev_handle 指针是指向设备的句柄,而行参里输入就是需要打开的设备。  usb_close  函数定义: int usb_close(usb_dev_handle *dev);  与usb_open相对应,关闭设备,是必须调用的...

Global site tag (gtag.js) - Google Analytics