无法打开超过28234个套接字?

4

我正在编写一个网络服务,希望实现高并发。但是当我尝试连接到第28,234个套接字时,出现了以下错误:

[Errno 99] Cannot assign requested address

客户端是用Python编写的,服务器端是用Haskell编写的。我在Ubuntu 11.04上运行,并且:

$ ulimit -n
1048576

我该如何克服这个限制?

纯属好奇,你为什么需要那么多的套接字? - Ikke
2
你想要同时监听超过28000个端口吗?这样做你很快就会用尽所有可用的端口。 - Sven Marnach
SOCK_STREAM 还是 SOCK_DGRAM - Turbo J
你是想在同一系统上创建30000个客户端连接吗?你认为这是一个现实的使用场景吗? - Nemo
@Ikke,我要创建一个高性能的websocket服务器。@Sven,那可能就是答案了。谢谢。@Neil,实际上,我认为自己主要是一名C程序员,我非常了解高并发所面临的问题。请不要在未来如此妄加猜测。@Turbo J,SOCK_STREAM。@Nemo,不,这是为了进行基准测试,我没有100,000台备用机器可以进行测试。 - dan_waterworth
2个回答

1

设置短暂端口范围为:

/proc/sys/net/ipv4/ip_local_port_range

防止您创建更多的连接。


这有点奇怪,因为 28232 < 28284 - Steve-o
@Steve-o,最后一个失败了,而且范围可能是包含的。 - dan_waterworth
哦,这是一个打字错误,因为您同时写了84和34。 - Steve-o

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接