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

转载:ulimit(文件句柄数量) 在 Centos5(RHEL5)中的调整

阅读更多

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

 

[Linux] ulimit(文件句柄数量) 在 Centos5(RHEL5)中的调整

Apr 21st, 2008

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2008/04/21/ulimit-linux.html

在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题,比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降,有可能打不开网页.
其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量.

查看方法

我们可以用ulimit -a来查看所有限制值

[root@centos5 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
max nice                        (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 4096
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
max rt priority                 (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


其中 "open files (-n) 1024 "是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目).这个值可用ulimit命令来修改,但ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效.

系统总限制是在这里,/proc/sys/fs/file-max.可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制.

另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量

查找文件句柄问题的时候,还有一个很实用的程序lsof.可以很方便看到某个进程开了那些句柄.也可以看到某个文件/目录被什么进程占用了.

修改方法
若要令修改ulimits的数值永久生效,则必须修改配置文档,可以给ulimit修改命令放入/etc/profile里面,这个方法实在是不方便,还有一个方法是修改/etc/sysctl.conf .我修改了,测试过,但对用户的ulimits -a 是不会改变的。只是/proc/sys/fs/file-max的值变了.(我给命令放到rc.local中失败)

我认为正确的做法,应该是修改/etc/security/limits.conf
里面有很详细的注释,比如

* soft nofile 32768
* hard nofile 65536

也可以直接运行下面这个shell。直接copy到你的终端中运行就好了.

echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf

就可以将文件句柄限制统一改成软32768,硬65536.配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制

注意.这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变.

生效

修改完重新登录就可以见到.(我的系统是Centos5.1.修改了,重新登录后就立刻生效.可以用ulimit -a 查看确认.)

如果你使用squid的话,你要在/etc/init.d/squid的文件加入ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384

分享到:
评论
1 楼 pcpig 2012-04-13  
查看当前打开文件数,倒序排序:
lsof | awk '{print $2}' | sort | uniq -c |sort +0 -1nr| awk '{print $2,$1}' | head

相关推荐

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

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

    ulimit设置句柄数

    这几天在做一个性能测试,写了一个模拟发送http的...  异常信息简单的信息如下:  I/Oexception(java.net.SocketException)caughtwhenprocessingrequest:Toomanyopenfiles  大致了解下,是文件句柄数设置太低导致

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

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

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

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

    linux的最大进程句柄数设置

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

    linux_ulimit的使用

    linux_ulimit的使用 linux_ulimit的使用 linux_ulimit的使用

    ansible-ulimit:有助于管理 ulimit 配置的角色

    有助于管理ulimit配置的角色。 例子 --- # Example of how to use the role - hosts: myhost vars: ulimit_config: - domain: '*' type: soft item: core value: 0 - domain: '*' type: hard item: rss ...

    Linux指令一周通 (技术图书大系).azw3

    3.22 mcd指令:在MS-DOS文件系统中切换工作目录 3.23 mdeltree指令:删除MS-DOS 目录/文件 3.24 mdu指令:显示MS-DOS目录所占用的磁盘空间 3.25 mformat指令:对MS-DOS文件系统的磁盘进行格式化 3.26 mkbootdisk指令...

    centos7-shisanxiang.sh

    | 5 | 配置ulimit(最大连接数调优到307200) | | 6 | 配置limits解除最大进程数和最大文件打开数限制 | | 7 | 内核sysctl.conf的常用参数优化释义(只显示不进行优化) | | 8 | 服务器字符集调整到utf-8 | | 9 | ...

    non-attacking-queens:[WIP]皇后区不应该互相残杀!

    非攻击女王 问题的一些计算。构建和运行(带有发行版) 运行和构建: bash release.sh/target/release/non-attacking-queens --... 例如: ulimit -s 65532对于更大的对象,您可以执行以下操作: ulimit -s 4294967295

    Linux gdb 调试coredump文件的尝试

    -g:在可执行文件中加入源码信息,比如:可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件都嵌入到可执行文件中,而是在调试时必须保证gdb能找到源文件。这些调试信息包括行号、变量的类型和...

    软件测试系列之C++Server测试全攻略

    测试期间,关闭对core文件的限制,使用命令:ulimit-cunlimited  在c++的世界里,程序设计的优雅让位于程序的稳定性、健壮性。“好程序是测出来的”这句话在C++领域里得到了充分体现。下面是我在开发中使用的测试...

    CentOS安装Oracle11g.docx

    为了能够在图形界面中安装 Oracle,需要安装 X Window System。使用以下命令安装: `yum –y install “X Window System”` 然后,使用 `startx` 命令启动图形界面。 关闭 Selinux 为了避免 Selinux 对 Oracle ...

    verify-ulimit:验证当前 ulimit

    验证-ulimit 验证当前 ulimit。

    功能说明:控制shell程序的资源。

    功能说明:控制shell程序的资源。补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

    ulimit命令 控制shell程序的资源

    为提高性能,可以根据设备资源情况,设置各linux用户的最大进程数,我们可以用ulimit来显示当前的各种用户进程限制。 ulimit为shell内建命令,可用来控制shell执行程序的资源。 语法格式:ulimit [参数] 常用参数...

    并发时-修改Linux系统下的大文件描述符限制

    通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下:  $ulimit -n  1024  当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的...

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

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

    elasticbeanstalk-docker-ulimit-example:更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目

    elasticbeanstalk-docker-ulimit-example 使用以下 ebextensions 配置更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目: files: "/etc/security/limits.conf": mode: "00644" owner: "root" group: ...

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

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

Global site tag (gtag.js) - Google Analytics