suse linux 文件只可读,SUSE LINUX系统文件句柄限制的修改

转自:http://xjsunjie.blog.iyunv.com/999372/684447

在SUSE Linux下部署应用的时候,有时会遇到“Socket/File: Can’t open so many files”的问题,这其实是因为SUSE Linux系统的文件句柄限制造成的,一般系统默认都是允许打开1024个文件,作为一台生产环境的应用服务器,是很容易就达到这个默认值的,因此我们需要把这个值改大一些。文件句柄释义:在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,在通过调用系统函数来关闭该文件。

下面我们看如何修改:

1、先查看系统默认值

302bad67f9dda864b7616bad5169f95e.gif

DSC0000.jpg (22.76 KB, 下载次数: 0)

2015-10-17 07:12 上传

注意红线标注的“open files   (-n) 1024”这行显示文件句柄限制数量是1024,这个值对于实际生产环境的应用服务器来说太小了。我们需要修改文件句柄的大小。

2、修改系统默认文件句柄限制

#vi    /etc/security/limits.conf

如果修改某个用户的文件句柄限制数量,可以增加如下两句:

你的用户名  soft nofile 2048

你的用户名  hard nofile 65536

如果将所有用户的文件句柄限制统一修改,可以增加如下两句:

* soft nofile 2048

* hard nofile 65536

注意wq保存退出。我们添加的有soft, hard两种限制:硬限制是实际的限制,而软限制是warnning限制,只会做出warning。修改完保存重启shell即可(有些系统可能需要重启系统,SUSE LINUX是不用的),再用ulimit -a 查看一下设置发现已成功。

302bad67f9dda864b7616bad5169f95e.gif

DSC0001.jpg (24.51 KB, 下载次数: 0)

2015-10-17 07:12 上传

3、ulimit其实就是对用户和单一程序的限制,我们再看一下系统总限制:

查看系统总限制命令:

#cat /proc/sys/fs/file-max

查看整个系统目前使用的文件句柄数量命令:

#cat /proc/sys/fs/file-nr

如果要修改file-max和file-nr的值,需要通过vi  /etc/sysctl.conf进行编辑修改,使用sysctl -p使其生效。

对于一般的应用来说(Apache、系统进程)1024完全足够使用,但是对于squid、mysql、java等单进程处理大量请求的应用来说就不够用了。那么如何知道当前进程打开了多少个文件句柄呢?我们可以通过这个来查看:

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

302bad67f9dda864b7616bad5169f95e.gif

DSC0002.jpg (12.12 KB, 下载次数: 0)

2015-10-17 07:12 上传

左边一列是打开的文件句柄数量,第二列是进程ID号。如果系统并发特别大,文件句柄数很有可能会超过1024,这时候我们就必须要调整系统参数,以适应实际应用的变化。

补充:

查看某个进程开了那些句柄:

#lsof -p pid

查看某个进程开了多少个句柄:

#lsof -p pid |wc -l

看某个文件/目录被什么进程占用了,显示已打开该目录或文件的所有进程信息:

#lsof  path/filename

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值