环境:

192.168.128.111(ha1.haproxy.org) -> CentOS 6.3 64bit    siege 2.78
192.168.128.10(n1.web.org) -> CentOS 6.5 64bit     nginx 1.6.2

在192.168.128.111上使用siege对192.168.128.10的nginx做压力测试

[root@ha1 bin]# siege -c 6500 -r 1 "Transactions:                   5827 hits
Availability:                  89.65 %
Elapsed time:                  25.58 secs
Data transferred:               3.40 MB
Response time:                  0.77 secs
Transaction rate:             227.80 trans/sec
Throughput:                     0.13 MB/sec
Concurrency:                  175.30
Successful transactions:        5827
Failed transactions:             673
Longest transaction:            6.10
Shortest transaction:           0.00

可以看到有673个失败,其中报了很多的错误,如下:

[error] descriptor table full sock.c:109: Too many open files

到n1.web.org服务器上

[root@n1 ~]# ulimit -n
1024
修改此值
[root@n1 ~]# ulimit -SHn 65535
[root@n1 ~]# ulimit -n
65535
[root@n1 ~]#

再回到ha1.haproxy.org服务器上进行测试,测试了两次结果如下:

Transactions:                   6500 hits
Availability:                 100.00 %
Elapsed time:                  11.34 secs
Data transferred:               3.79 MB
Response time:                  0.46 secs
Transaction rate:             573.19 trans/sec
Throughput:                     0.33 MB/sec
Concurrency:                  264.64
Successful transactions:        6500
Failed transactions:               0
Longest transaction:            4.66
Shortest transaction:           0.00
Transactions:                   6457 hits
Availability:                  99.34 %
Elapsed time:                  15.31 secs
Data transferred:               3.77 MB
Response time:                  0.75 secs
Transaction rate:             421.75 trans/sec
Throughput:                     0.25 MB/sec
Concurrency:                  316.52
Successful transactions:        6457
Failed transactions:              43
Longest transaction:            6.56
Shortest transaction:           0.00

以下说明转载【每天一小步】

Too many open files 常见于高并发访问文件系统,多线程网络连接等场景。

程序经常访问的 文件、socket在Linux中都是文件。系统需要记录每个当前访问的file的name、location、access authority等相关信息,这样的一个实体被称为file entry。“open files table”(图中橙色标识)存储这些file entry,以数组的形式线性管理。文件描述符(file descriptor)作为进程到open files table的指针,也就是open files table的下标索引,将每个进程与它所访问的文件关联起来。

每个进程中都一个file descriptor table管理当前进程所访问(open or create)的所有文件,文件描述符关联着open files table 中的file entry。对于open files table能容纳多少file entry。Linux系统配置open files table的文件限制,如果超过配置值,就会拒绝其它文件操作的请求,并抛出Too many open files异常。

这种限制有系统级和用户级之分。

系统级:

系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制

  1. cat     /proc/sys/fs/file-max

  2. sysctl -a 查看结果中fs.file-max这项的配置数量

如果需要增加配置数量就修改/etc/sysctl.conf文件,配置fs.file-max属性,如果属性不存在就添加。

配置完成后需要使用sysctl -p通知系统启用此项配置

用户级:

Linux限制每个登录用户的可连接文件数。可通过ulimit -n查看当前有效设置。如果想修改这个值就使用ulimit -SHn <number>命令。

对于文件描述符增加的比例,资料推荐是以2的幂次为参考。如当前文件描述符数量是1024,可增加到2048,如果不够,可设置到4096,依此类推。

转载于:https://blog.51cto.com/medone/1580981

Too many open files相关推荐

  1. 批处理 bat cmd 命令大全

    net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...

  2. CCAH-CCA-500-4题:Where are Hadoop task log files stored?

    4.Where are Hadoop task log files stored? For each YARN job, the Hadoop framework generates task log ...

  3. 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?...

    复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...

  4. 读django文档——Managing static files (e.g. images, JavaScript, CSS)

    在上一篇读django文档--nginx + uwsgi 部署django项目_苦行僧的妖孽日常-CSDN博客  部署django项目后,发现在runserver时都能正常部署的 static 文件都 ...

  5. spark-submit --files 动态加载外部资源文件

    在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问.在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: val is ...

  6. IOS沙盒Files目录说明和常用操作

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  7. _catboost.CatBoostError: C:/Program Files (x86)/Go Agent/pipelines/BuildMaster/catboost.git/catboost

    _catboost.CatBoostError: C:/Program Files (x86)/Go Agent/pipelines/BuildMaster/catboost.git/catboost ...

  8. R语言list.files函数获取文件列表实战

    R语言list.files函数获取文件列表实战 目录 R语言list.files函数获取文件列表实战 #仿真数据 #基本语法

  9. pyinstaller打包之后运行出现:Could not find the matplotlib data files

    pyinstaller 打包之后Could not find the matplotlib data files 目录 pyinstaller 打包之后Could not find the matpl ...

  10. Extjs 打包 failed to find any files

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/inforstack/article/details/50898641 在编译的时候,classic是 ...

最新文章

  1. JDBC连接sql server数据库及其它
  2. mfc程序转化为qt_10年程序员:我都学过这些语言,2019年开始我再也不是程序员......
  3. java动态同步_java并发基础-Synchronized
  4. SQL Server2008优化之SET STATISTICS开关
  5. python 反传播_纯Python实现反向传播(BP算法)(5)
  6. 【ArcGIS操作】3 数据制图篇
  7. 181101新闻:午后阳光下集思广益,课例研修尝试与挑战并存
  8. 怎样用计算机进入手机驱动,电脑没有手机驱动_怎么安装手机驱动_好特教程
  9. java用下划线分开字母和数字_数字文字中的Java 7下划线
  10. 【存储】超融合(HCI)和云是什么以及区别|超融合和虚拟化的区别
  11. 企业使用Windows Sysprep工具来封装Win10、Win11操作系统(最新最全)
  12. linux下bcd文件还原,BCDEDIT命令详解 | 数据恢复实验室 Data Recovery Laboratory
  13. 2018年8月win10教育版education最新激活密钥
  14. 局域网唤醒计算机,电脑远程开机_局域网唤醒电脑 | 茶杯猫
  15. MATLAB台大郭彦甫老师课程笔记:第一课:基本操作与矩阵输入
  16. 面试技巧--国企银行篇
  17. C++引用实现函数传递数据
  18. Collection集合类和Map接口各实现类详解
  19. 怎么样给小孩取名字?给孩子起名字也不是一件难事
  20. Win10+Word2016保存丢失解决方案

热门文章

  1. 从现在到未来50年,传感器将如何改变世界?
  2. 辩论届人机大战:IBM新AI完胜人类冠军!
  3. 基于系统科学理论的认知科学研究进展
  4. 阿里、腾讯美国员工基本年薪曝光,资深算法工程师24万美元,高级研究员26万美元
  5. 40 万年薪招应届生?OPPO 狂揽芯片人才,应届生招聘行情究竟如何?
  6. AWS Device Farm介绍及Appium踩过的坑
  7. 结合MDN的代码手写bind
  8. 景观格局动态变化分析方法(基于ArcGIS、Fragstats、ENVI、ERDAS、Patch Analysis for ArcGIS) (2011-03-15 08:07:03)...
  9. 2018专业创业赛事服务平台
  10. 如果你在2018面试前端,那这篇文章最好看一看!