首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误24:打开的文件太多。但我不能打开文件?

错误24:打开的文件太多。但我不能打开文件?
EN

Stack Overflow用户
提问于 2016-09-17 02:13:05
回答 2查看 24.6K关注 0票数 8

我正在使用treq (https://github.com/twisted/treq)从我的web服务中查询一些其他的api。今天,当我对自己的服务进行压力测试时,它显示了一个错误

twisted.internet.error.DNSLookupError: DNS lookup failed: address 'api.abc.com' not found: [Errno 24] Too many open files.

但问题是,我的整个代码我没有打开任何文件。我怀疑这可能是由于我查询的应用程序接口关闭或阻塞了我( api.abc.com)造成的,因为我的压力测试可能就像到那个端点的ddos。不过,在这种情况下,这不应该是类似于拒绝连接的东西吗?我不知道为什么它会有那个Too many open files错误。或者这是因为创建了太多的线程查询?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-17 02:27:23

“文件”包括网络套接字,这是基于Unix的系统上的一种文件类型。可使用ulimit -n配置打开文件的最大数量

代码语言:javascript
复制
# Check current limit
$ ulimit -n
256

# Raise limit to 2048
$ ulimit -n 2048

文件句柄用完并必须提高限制,这并不奇怪。但是,如果限制已经很高,您可能会泄漏文件句柄(没有足够快地关闭它们)。在像Python这样的垃圾收集语言中,终结器并不总是足够快地关闭文件,这就是为什么您应该小心地使用with块或其他系统在完成文件后立即关闭文件。

票数 19
EN

Stack Overflow用户

发布于 2018-12-07 08:45:56

我想以@Dietrich Epp的回答为基础。设置ulimit -n将仅更改该终端的电流限制。如果您想要更改此限制,使其存在于所有终端会话中(如在EC2上),则需要编辑:

vim /etc/security/limits.conf

并添加对每个用户的开放描述符的数量的软和硬限制。例如,您可以将此代码片段粘贴到上面的文件中:

代码语言:javascript
复制
*         hard    nofile      500000
*         soft    nofile      500000
root      hard    nofile      500000
root      soft    nofile      500000

这会将每个新终端会话的限制设置为500000。编辑完成后,注销,然后重新登录(如果可以,也可以重新启动,这是更好的做法)。然后,您可以运行ulimit -n来确认是否正确设置了它。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39537731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档