Python错误提示:[Errno 24] Too many open files的分析与解决

背景

最近在工作中发现了一个错误,在执行多线程扫描脚本的时候频繁出现下面这个错误

HTTPConnectionPool(host=‘t.tips‘, port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError(‘<requests.packages.urllib3.connection.HTTPConnection object at 0x7f29d4081150>: Failed to establish a new connection: [Errno 24] Too many open files‘,))

比较诡异...

分析

博主自己手上的一些小项目经常需要进行多线程的批量扫描来采集数据,像采集数据这种功能当然是线程越多越好了,所以通常情况下我都是使用 3000 个线程进行扫描,在确定带宽充足,系统硬件配置够高的情况下依然会出现上述问题,这就让我想到是不是因为系统的限制问题。

通过搜索引擎我找到了关于系统限制的介绍,执行

$ ulimit -n
1024

得到的结果是1024,系统限制为同时打开1024个文件,这显然是太少了。

解决

这个问题的解决方法很简单,直接修改下面的文件

sudo vim /etc/security/limits.conf

最这个文件的最后添加两行代码

* soft nofile 10240
* hard nofile 10240

当然这个数字根据自己的需要进行修改即可,保存后注销重新登录就好了。

原文地址:https://www.cnblogs.com/Antiver/p/8196531.html

时间: 2024-08-30 10:41:16

Python错误提示:[Errno 24] Too many open files的分析与解决的相关文章

python错误提示“TabError: inconsistent use of tabs and spaces in indentation”

在遍历打印10以内的奇数是出现"TabError: inconsistent use of tabs and spaces in indentation"的错误提示: 代码如下: 第一感觉没什么错误,但是当我设置显示"空格与制表符"时候,问题出现了,在第4.5行前由制表符,如图所示: 在if和continue前有制表符,所以执行的时候会提示"TabError: inconsistent use of tabs and spaces in indentati

composer错误提示Cloning failed using an ssh key for authentication的解决方法

早上ytkah在测试laravel用composer安装一些插件时出现了一些错误,提示如下,是github的ssh密匙认证错误,提示要重新生成token,然后保存在/root/.config/composer/auth.json文件中 Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos Head to https://github.com

最全Pycharm教程(23)——Pycharm编辑器功能之代码高亮显示及错误提示机制

1.代码高亮显示 当你在编辑框中输入代码时,Pycharm会在后台对其进行分析.这个IDE能够智能的识别出关键字.变量.字符串.注释等,并以不同的字体颜色进行显示.Pycharm的符号配色方案定义在 Colors and Fonts settings中(Ctrl+Alt+S→IDE Settings→Editor→Color and Fonts). 我们先选择编程语言,这里选择Python,然后根据个人习惯来设置字符配色方案.然而这里Pycharm自带的配色方案是不可更改的,我们需要先创建一个拷

在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案对于作者的情况都不适用,依然报错,没办法,虽然作者的英语水平很不咋地,但中文帮不了作者,只好求助于英文了. ? ? ? ?建议各位看客在修改时,仔细看清楚自己的情况是否适用.废话不多说,开始正文. ? ? ? ?作者的路径为open('D:\LearningBooks\test.txt') ? ?

从 A/Looper: Could not create epoll instance. errno=24 错误浅谈解决各种 bug 的思路

今天代码写着写着就莫名闪退了,手机也没有“程序停止运行”的提示,logcat也没有看到蓝色的调用栈log,这样的闪退最是蛋疼了,还好必现.复现几次之后,终于从logcat中看到了一行可疑的log: A/Looper: Could not create epoll instance. errno=24 ,看起来又是在native层闪退了.本文就把这个问题的分析解决过程记录了下来. 方法论 遇见没填过的坑,第一反应就是Google之,果然前几个结果中一个 Stack Overflow的问答 就为这个

Python Socket TypeError: a bytes-like object is required, not &#39;str&#39; 错误提示

在学习socket编程时,遇到代码返回如下错误: TypeError: a bytes-like object is required, not 'str' 发现这里python3.5和Python2.7在套接字返回值解码上有区别. 首先可以明确,在python3中默认的编码方式是unicode.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),因此 utf-16就是现在最常用的unicode版本. 不过考虑到utf8省空间,在文件里存的

【初学python】错误SSLError: [Errno 1] _ssl.c:504:的解决记录

最近在实习公司学习使用python做web自动化测试,其中使用到httplib这个模板,主要用于与待测试界面建立HTTP连接,发送数据请求,接收请求状态码和查询数据,验证功能.但是新版本的web界面改成使用https协议,原来的测试用例都变成无法跑通的状态. 将协议从HTTP改成HTTPS后,报以下错误: SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown proto

python操作剪贴板错误提示:pywintypes.error: (1418, &#39;GetClipboardData&#39;,线程没有打开的剪贴板)

问题现象:通过打断点,一步步调试可以正常复制和粘贴剪贴板数据.但是直接运行会报错pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板) 问题原因:原因是直接运行的话,没办法控制main线程的运行顺序,可能出现setText()还未关闭剪贴板,getText()就打开了剪贴板的情况. 但是打了断点之后,就可以按照代码中所写的那样的顺序来执行了. 解决方法:在调用Clipboard.setText(content)之后,一定要加time.sle

python在使用HTMLTestRunner时,报告为空,错误提示&lt;_io.TextIOWrapper name=&#39;&lt;stderr&gt;&#39; mode=&#39;w&#39; encoding=&#39;utf_8&#39;&gt;

解决方案:将HTMLTestRunner脚本的第631行的 print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime) 或print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)) 修改为 sys.stderr.write('\nTime Elapsed: %s\n' % (self.stopTime - self.st