我是关于在linux上构建一个服务器(我选择编程语言),它接受来自桌面软件的许多TCP / IP套接字持久连接。如何廉价而有效地完成这项工作?一台机器不能有超过60000个端口,所以如果我必须支持600k连接,那么我需要10个linux机箱?
由于每个连接所需的计算量非常小(95%的空闲时间),一个linux盒子已经可以处理600k我不想浪费金钱和资源运行10个盒子只是为了解决端口限制。
有什么想法吗?
答案 0 :(得分:6)
连接由以下元组标识:[服务器IP;服务器端口;客户IP;客户端端口]因此,每台机器可以使用超过60,000个端口。
Erlang有效地处理了1000个连接中的10个。看看Apache和Erlang Yaws之间的comparison。
答案 1 :(得分:1)
NOT 需要为每个连接提供一个端口。 HTTP服务器只使用一个端口(通常为80)。
答案 2 :(得分:1)
由于任何相对广泛使用的语言都有一个相当有效的套接字库,我会选择以下语言:
答案 3 :(得分:0)
你应该能够轻松地使用任何体面的框架。我们使用Twisted这是好的(假设你理解python和异步编程),如果有点奇怪的话要理解。
异步编程几乎是给定的,因为你可能不想启动600k线程。