- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有没有办法故意导致错误号 23(ENFILE 文件表溢出)?
我正在进行套接字编程,我想检查创建太多套接字是否会导致此错误。据我了解 - 创建的 socked 被视为文件描述符,因此它应该计入打开文件的系统限制。
这是我的 python 脚本的一部分,它创建了套接字
def enfile():
nofile_soft_limit = 10000
nofile_hard_limit = 20000
resource.setrlimit(resource.RLIMIT_NOFILE, (nofile_soft_limit,nofile_hard_limit))
sock_table = []
for i in range(0, 10000):
print "Creating socket number {0}".format(i)
try:
temp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.SOL_UDP)
except socket.error as msg:
print 'Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1]
print msg[0]
sock_table.append(temp)
我使用 setrlimit() 将打开文件的进程限制更改为较高的值,这样我就不会得到 Errno24 (EMFILE)。
我尝试了两种方法:1) 每个用户限制 通过更改/etc/security/limits.conf
root hard nofile 5000
root soft nofile 5000
(之后使用新 session 登录)
2) 系统范围的限制通过更改/etc/sysctl.conf
fs.file-max = 5000
and then run sysctl -p to apply the changes.
我的脚本轻松创建了 10k 套接字,尽管存在每个用户和系统范围的限制,并且它以 errno 24 (EMFILE) 结束。
是否有可能实现我的目标?我正在使用两个操作系统 - CentOS 6.7 和 Fedora 20。也许在这些系统中还需要进行一些其他设置?
谢谢!
最佳答案
ENFILE
仅在达到系统范围的限制时才会发生,而您目前尝试的设置是针对每个进程的,因此仅与 EMFILE 相关。
有关更多详细信息,包括要更改哪些系统范围的设置以触发 ENFILE
,请参阅此答案:https://stackoverflow.com/a/24862823/4323以及https://serverfault.com/questions/122679/how-do-ulimit-n-and-proc-sys-fs-file-max-differ
关于python - 如何故意导致Errno 23 ENFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763185/
我写了一个测试来显示 asio async_accept 的问题我有一台服务器,与它的任何连接都永远打开在接受了许多连接后(在我的例子中是 1017)下一个连接失败,出现“打开的文件太多”错误。然后对
有没有办法故意导致错误号 23(ENFILE 文件表溢出)? 我正在进行套接字编程,我想检查创建太多套接字是否会导致此错误。据我了解 - 创建的 socked 被视为文件描述符,因此它应该计入打开文件
我在运行 Karma 测试时遇到文件表溢出问题,我不知道如何调试它。 karma.conf.js: module.exports = function (config) { config.se
当我对它运行负载测试时,我的应用程序在相对较低的压力点退出。为了测试,我使用这个 npm 包 loadtest . 我以每秒 1000 个请求和 10 个并发的速度运行测试 10 秒。 loadtes
我一直收到这个 pouchDB 错误,我不知道这是怎么回事。 Error: connect ENFILE 127.0.0.1:5984 - Local (undefined:undefined)
我正在尝试在以下命令中在 mac osx 10.12.15 上安装和运行 Reaction npm install -g react -cli react 初始化cd react react 然后我遇
我是一名优秀的程序员,十分优秀!