首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展支持长轮询的web服务器

如何扩展支持长轮询的web服务器
EN

Server Fault用户
提问于 2013-12-20 10:59:08
回答 2查看 4.1K关注 0票数 7

我计划增加更多的web应用服务器,以支持增加客户端,部署HAproxy和Keepalived以实现负载平衡和高可用性。

我的服务器使用有以下特点:

  1. 作业不是CPU密集型的。消息是小于100个字符的JSON文本。
  2. 用户将通过客户端设备Y向服务器发送消息,通常每天4-5条消息。
  3. 客户端设备X一直在等待来自服务器的消息。如果消息在服务器上可用,客户端设备X必须能够在2秒内获得消息。否则,这个信息就过时了。

出于这个原因,

  1. 客户机设备X使用长轮询HTTP连接来响应。每个连接将持续5秒并重新连接。
  2. 客户端设备X和客户端设备Y连接到同一台服务器,因此X和Y可以很容易地发送消息

问题

如果有60,000多个客户端设备X连接到服务器,我的负载均衡器或路由器将耗尽TCP端口。对20,000名用户来说,扩大规模的最佳方式是什么?

我的服务器运行在Ubuntu服务器上,使用tomcat和。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-12-29 05:53:27

我不认为你的60000客户才是真正的问题。如果没有足够的文件描述符,您可能会遇到问题,但作为OS配置的一部分,这应该很容易修复。

这就是为什么连接不会成为你的问题。每个连接都由其源ip地址、源端口、目标ip地址和目的端口来描述。在网络堆栈中,这个四倍用于将数据包与文件描述符相匹配(每个文件描述符代表一个连接)。您的服务器有固定的目标ip地址和目标端口(您的服务器是其客户端的目的地),但是源ip地址和源端口是可变的。端口是一个16位数,因此来自一个客户端的最大连接数是64K。IPv4地址是一个32位数,它为您提供了4,294,967,296个可能的源地址。做一些基本的计算,您的服务器可能有64K * 4,294,967,296个连接映射到单个源ip和端口。

这就是为什么您在打开文件描述符的最大数量上可能会遇到问题,而不是客户端的数量。

票数 6
EN

Server Fault用户

发布于 2013-12-23 13:10:03

最简单的方法可能是在DNS级别实现负载平衡。

意思:有一个循环DNS条目,平衡到2,3,或更多的物理负载平衡器。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/562701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档