在同一端口上进行大量连接的性能考虑因素

时间:2010-10-07 20:13:24

标签: sockets

在设计侦听一个端口的服务器应用程序时,应考虑哪些性能因素?我知道成千上万的客户端可以连接到单个端口上的服务器,但是服务器应用程序接受单个端口上的所有传入请求会对性能产生负面影响吗?

我的理解是正确的,这个模型(服务器侦听一个处理传入连接的端口,然后通过建立客户端连接时创建的出站连接进行响应)是数据库/ Web服务器等的工作方式吗?

此致 布赖恩

1 个答案:

答案 0 :(得分:0)

服务器是否侦听一个端口或多个端口并不重要。服务器仍然必须为它接受的每个客户端建立完整的套接字连接。操作系统仍然必须将入站数据包路由到正确的套接字端点,并且套接字由两个端点的IP /端口对的组合唯一标识,因此如果服务器端点使用不同的端口,则不会出现性能问题。

任何性能问题都会影响服务器代码处理这些套接字连接的方式。如果它只侦听一个端口,并在单个线程中使用简单的accept()循环接受该端口上的客户端,那么它可以接受客户端的速率受该循环的限制。通常,服务器为每个接受的客户端生成工作线程,如果不使用线程池,则它本身具有自己的性能开销。如果服务器需要同时处理大量客户端,那么它应该使用重叠的I / O或I / O完成端口来更有效地处理连接。