【发布时间】:2009-09-02 06:44:06
【问题描述】:
考虑这段代码:
import socket
store = []
scount = 0
while True:
scount+=1
print "Creating socket %d" % (scount)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
store.append(s)
给出以下结果:
Creating socket 1
Creating socket 2
...
Creating socket 253
Creating socket 254
Traceback (most recent call last):
File "test_sockets.py", line 9, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/socket.py", line 159, in __init__
socket.error: (24, 'Too many open files')
检查 sysctl 中允许的打开文件数给出:
$ sysctl -A |grep maxfiles
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
这比我可以成功打开的 253 个套接字要多...
有人可以帮我把这个数字增加到 500 以上吗?我正在尝试使用真实套接字(要求)模拟对等网络,只有 50 个模拟节点和 5 个传出连接和 5 个传入连接,将给出 500 个所需套接字的数量。
顺便说一句,在 Linux 下运行同样的代码给了我大约 1020 个套接字,这是我更喜欢的方式。
【问题讨论】: