Too many open files
环境:
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异常。
这种限制有系统级和用户级之分。
系统级:
系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制
cat /proc/sys/fs/file-max
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相关推荐
- 批处理 bat cmd 命令大全
net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...
- 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 ...
- 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?...
复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...
- 读django文档——Managing static files (e.g. images, JavaScript, CSS)
在上一篇读django文档--nginx + uwsgi 部署django项目_苦行僧的妖孽日常-CSDN博客 部署django项目后,发现在runserver时都能正常部署的 static 文件都 ...
- spark-submit --files 动态加载外部资源文件
在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问.在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: val is ...
- IOS沙盒Files目录说明和常用操作
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- _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 ...
- R语言list.files函数获取文件列表实战
R语言list.files函数获取文件列表实战 目录 R语言list.files函数获取文件列表实战 #仿真数据 #基本语法
- pyinstaller打包之后运行出现:Could not find the matplotlib data files
pyinstaller 打包之后Could not find the matplotlib data files 目录 pyinstaller 打包之后Could not find the matpl ...
- Extjs 打包 failed to find any files
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/inforstack/article/details/50898641 在编译的时候,classic是 ...
最新文章
- JDBC连接sql server数据库及其它
- mfc程序转化为qt_10年程序员:我都学过这些语言,2019年开始我再也不是程序员......
- java动态同步_java并发基础-Synchronized
- SQL Server2008优化之SET STATISTICS开关
- python 反传播_纯Python实现反向传播(BP算法)(5)
- 【ArcGIS操作】3 数据制图篇
- 181101新闻:午后阳光下集思广益,课例研修尝试与挑战并存
- 怎样用计算机进入手机驱动,电脑没有手机驱动_怎么安装手机驱动_好特教程
- java用下划线分开字母和数字_数字文字中的Java 7下划线
- 【存储】超融合(HCI)和云是什么以及区别|超融合和虚拟化的区别
- 企业使用Windows Sysprep工具来封装Win10、Win11操作系统(最新最全)
- linux下bcd文件还原,BCDEDIT命令详解 | 数据恢复实验室 Data Recovery Laboratory
- 2018年8月win10教育版education最新激活密钥
- 局域网唤醒计算机,电脑远程开机_局域网唤醒电脑 | 茶杯猫
- MATLAB台大郭彦甫老师课程笔记:第一课:基本操作与矩阵输入
- 面试技巧--国企银行篇
- C++引用实现函数传递数据
- Collection集合类和Map接口各实现类详解
- 怎么样给小孩取名字?给孩子起名字也不是一件难事
- Win10+Word2016保存丢失解决方案
热门文章
- 从现在到未来50年,传感器将如何改变世界?
- 辩论届人机大战:IBM新AI完胜人类冠军!
- 基于系统科学理论的认知科学研究进展
- 阿里、腾讯美国员工基本年薪曝光,资深算法工程师24万美元,高级研究员26万美元
- 40 万年薪招应届生?OPPO 狂揽芯片人才,应届生招聘行情究竟如何?
- AWS Device Farm介绍及Appium踩过的坑
- 结合MDN的代码手写bind
- 景观格局动态变化分析方法(基于ArcGIS、Fragstats、ENVI、ERDAS、Patch Analysis for ArcGIS) (2011-03-15 08:07:03)...
- 2018专业创业赛事服务平台
- 如果你在2018面试前端,那这篇文章最好看一看!