`
kfcman
  • 浏览: 381910 次
  • 性别: 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下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...

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

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

    Linux修改TCP连接数.txt

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

    Linuxc高级编程之进程(带代码截图)

    2.在子进程中打开文件file1,写入自己的“班级_姓名_学号”, 3. 父进程读取file1中的内容,并且打印显示。 4. 在父进程中获取已经结束的子进程的状态信息,打印该信息,并且打印结束的子进程的进程号。

    Linux应用技术:Linux常用命令与VI文件编辑器.docx

    在/home目录下使用vi编辑器创建文本文件test,输入内容“I Like Linux!”并保存,然后使用cat命令将文件中的内容显示出来。(截图) 用vi编辑器打开test文件继续添加一下内容: 1234567890123456 Abcdefghjkabcd ...

    Linux服务器命令.doc

    6 查看目录下的各个文件大小日期等 6 查看环境变量 6 进入到用户的起始目录 6 退出并重新登陆 6 ftp命令 6 文件拷贝命令 7 拷贝文件夹命令 7 查看进程打开文件数 7 查看临时目录某个文件大小 7 查看环境变量 7 Linux...

    Linux课程设计:Linux系统下多进程的创建与通信+源代码+文档说明+实验报告

    Linux课程设计:Linux系统下多进程的创建与通信+源代码+文档说明 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96...

    Linux FTP服务配置

    chroot_list_file=/etc/vsftpd/chroot_list //一般情况下都将这个文件写在/etc/vsftpd目录下,这个文件就是设置锁定用户的一个列表文件,其中一行就代表一个用户 设置欢迎信息 dirmessage_enable=YES message_file=....

    操作系统实验课作业,编译Linux内核,进程控制,生产者消费者问题,内存监视,复制文件+源代码+文档说明+实验报告

    操作系统实验课作业,编译Linux内核,进程控制,生产者消费者问题,内存监视,复制文件+源代码+文档说明+实验报告 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是...

    ubuntu如何运行.sh文件,.sh文件运行提示脚本异常

    ubuntu执行.sh文件,1 .sh文件是Ubuntu下可执行文件,首先需要确定它的权限是否是可执行的,2、 用vim打开sh文件,3、查看文件格式:4. 修改文件格式: 5. 保存退出: 6. 执行:./filename 注意:不可以用sh ...

    linux学习记录

    要使用用户进行上传,比如root 就必须修改etc目录下的两个文件 一个是user_list 一个是ftpusers Chkconfig 开机自启动 如:chkconfig vsftpd on Chkconfig httpd on http服务 chkconfig mysql on mysql服务 ...

    清华大学Linux操作系统原理与应用

    8.5.1 打开文件 185 8.5.2 读写文件 187 8.6 编写一个文件系统 189 8.6.1 Linux文件系统的实现要素 189 8.6.2 什么是romfs文件系统 191 8.6.3 romfs文件系统的布局与文件结构 191 8.6.4 具体实现的对象 192 习题8 ...

    《linux编程技术》-实验3.doc

    在子进程中打开文件file1,写入自己的“班级_姓名_学号”,  2.父进程读取file1中的内容,并且打印显示。  3.在父进程中获取已经结束的子进程的状态信息,打印该信息,并且打印结束的子进程的进程号。 实验四 ...

    Windows与Linux下操作系统相关实验C++源码+文档说明+实验报告+相关过程截图

    <项目介绍> Windows与Linux下操作系统相关实验 介绍 Windows与Linux下操作系统相关实验 主要实验内容包括: ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    嵌入式操作系统作业,Linux自定义内核模块编写,Linux进程间通信(Socket IPC)+源代码+文档说明

    嵌入式操作系统作业,Linux自定义内核模块编写,Linux进程间通信(Socket IPC)+源代码+文档说明 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源...

    进程通信.doc

    B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)...

    cmd操作命令和linux命令大全收集

    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间 date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,...

Global site tag (gtag.js) - Google Analytics