0
在设计监听一个端口的服务器应用程序时应考虑哪些性能问题?我知道成千上万的客户端可以通过单个端口连接到服务器,但是服务器应用程序接受单个端口上的所有传入请求会对性能产生负面影响?同一端口上大量连接的性能考虑因素
我的理解是否正确:这个模型(服务器监听一个处理传入连接的端口,然后响应客户端连接建立时创建的出站连接)是数据库/ web服务器等的工作方式?
问候, 布赖恩
在设计监听一个端口的服务器应用程序时应考虑哪些性能问题?我知道成千上万的客户端可以通过单个端口连接到服务器,但是服务器应用程序接受单个端口上的所有传入请求会对性能产生负面影响?同一端口上大量连接的性能考虑因素
我的理解是否正确:这个模型(服务器监听一个处理传入连接的端口,然后响应客户端连接建立时创建的出站连接)是数据库/ web服务器等的工作方式?
问候, 布赖恩
它不一样,如果服务器侦听一个或一组端口上的关系。服务器仍然必须为其接受的每个客户端建立完整的套接字连接。操作系统仍然必须将入站数据包路由到正确的套接字端点,并且套接字由两个端点的IP /端口对的组合唯一标识,因此如果服务器端点使用不同端口,则不会出现性能问题。
任何性能问题将以服务器的代码处理这些套接字连接的方式出现。如果它只监听一个端口,并且在一个线程中使用简单的accept()循环接受该端口上的客户端,则它可以接受客户端的速率受该循环的限制。通常情况下,服务器会为每个接受的客户端产生工作线程,如果不使用线程池,自身会产生性能开销。如果服务器需要同时处理大量客户端,那么它应该使用重叠的I/O或I/O完成端口来更有效地处理连接。