在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进nginx+apache篇。

查看方法

我们可以用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命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效(在布署Nginx+FastCGI我就遇到这个问题,将ulimit -SHn 65535放到/etc/rc.d/rc.local也没起什么作用)

系统总限制是在这里,/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的值变了。

我认为正确的做法,应该是修改/etc/security/limits.conf
里面有很详细的注释,比如
* soft   nofile   32768
* hard nofile 65536
就可以将文件句柄限制统一改成软32768,硬65536。配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制。

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

生效
因为我平时工作最多的是部署web环境(Nginx+FastCGI外网生产环境和内网开发环境),重新登陆即可(reboot其实也行)我分别用root和www用户登陆,用ulimit -a分别查看确认,做这之前最好是重启下ssh服务,service sshd restart。

博客地址:【爱开卷360】http://www.cnblogs.com/ibook360

转载于:https://www.cnblogs.com/horizonli/p/6026705.html

[转]正确配置Linux系统ulimit值的方法相关推荐

  1. 正确配置Linux系统ulimit值的方法【转】

    转自:http://www.cnblogs.com/ibook360/archive/2012/05/11/2495405.html 在Linux下面部署应用的时候,有时候会遇上Socket/File ...

  2. 正确配置Linux系统ulimit值的方法

    2019独角兽企业重金招聘Python工程师标准>>> 在Linux下面部署应用的时候,有时候会遇上Socket/File: Can't open so many files的问题: ...

  3. 正确配置Linux系统ulimit/nproc值的方法

    在Linux下面部署应用的时候,有时候会遇上Socket/File: Can't open so many files的问题:这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且L ...

  4. linux设置ulimit值永久生效

    linux设置ulimit值永久生效 小知识的积累,转自 http://hi.baidu.com/moonelf9989/blog/item/1deadf12780fa0c5c2fd789d.html ...

  5. 如何配置Linux系统的IP地址?

    如何配置Linux系统的IP地址,使其能够连接局域网甚至外网.其实这并不难,Linux系统网络配置的方法有多种. 下面,以VMware虚拟机中的Linux系统为例,进行讲解. 我的真实机是Window ...

  6. 删除双系统linux分区,双系统时如何正确删除Linux系统

    双系统时如何正确删除Linux系统 (2012-07-23 21:37:24) 标签: 杂谈 一直用的是win7和Ubuntu的双系统,上次在win7系统下重新区分了硬盘大小,结果开机时两个系统都不能 ...

  7. kali linux查看版本,kali linux 系统版本的查看方法

    kali linux 系统版本的查看方法 1. kali linux 系统版本查看 命令:cat /etc/issue 2. kali linux系统内核信息查看 命令:uname -a 以上这篇ka ...

  8. linux检测到文件更新执行,一种更新Linux系统中文件的方法及操作方法专利_专利查询 - 天眼查...

    1. 一种更新Linux系统中文件的方法,其特征在于,包括在基于Linux系统的电视的主 程序中设计一个功能接口,该功能接口在电视系统检测到外部存储设备接入时被调用,所 述功能接口实现以下内容: A: ...

  9. Linux系统的各种安装方法与修复技巧

    Linux系统的各种安装方法与修复技巧 一.Linux的安装 1.光盘启动安装 没啥她说的,在BIOS中设置光驱启动系统,按提示一步一步安装就可心了. 2.U盘启动.硬盘安装 很多情况下,大家都是从网 ...

最新文章

  1. FTPVSFTPD安装和参数说明
  2. Java数据结构类如何使用_Matlab如何使用Java的数据结构类型
  3. Android --- TabHost 切换时,改变选项卡下字体的状态(大小、加粗、默认被选中第一个)
  4. (42) Aeroo 模板实战
  5. jdbc对mysql进行增删改查操作(Statement)
  6. DNS资源记录类型的总结
  7. 当前主流量化平台整理201705版
  8. 沙市一中2021年高考成绩查询时间,2021年荆州高考状元是谁分数多少分,历年荆州高考状元名单...
  9. python16-前端之课堂笔记
  10. 近期热门微信小程序demo源码下载汇总
  11. Web实现:仿电子仪器网站 含HTML CSS部分 内含效果图
  12. fdfs文件服务环境搭建
  13. Android 计时器Timer用法
  14. 如何注册域名邮箱?个人域名邮箱怎么弄?域名邮箱登录入口?
  15. “衣带渐宽终不悔,为伊消得人憔悴”的赏析
  16. 怎样推导圆面积计算公式?
  17. 从.net复制源代码中国农历阵列,必要做日历
  18. mysql gh ost 对比_GitHub开源MySQL Online DDL工具gh-ost参数解析
  19. 【HTML】元素的 alt 和 title 有什么区别?
  20. 树莓派linux led字符设备驱动(原子操作)

热门文章

  1. pythonint切片_python-切片
  2. JavaWeb课程复习资料(六)——DAO与DAOImpl层封装
  3. ASP.NET下载网络图片
  4. Tomcat可运行源码资源分享
  5. 每天学点Python之collections
  6. sql注入问题-视图-事物-以及存储过程(可视化工具)
  7. Android开发之Android Material Design Toolbar自定义随笔
  8. 风影ASP.NET基础教学 3 web服务器控件(二)
  9. Spartan-II 应用指南 转载
  10. vscode markdown插件_如何用Markdown写公众号