对于目标100 K并发的websocket连接,建议使用什么nginx或haproxy设置?我认为,一个单一的nginx将无法接受这样的流量以及并发连接。如何分割nginx/ How的通信量(DNS、lvl或任何Amazon/Google选项)?一个nginx能够处理多少并发websockets?
试着从谷歌搜索等帖子中收集相关信息。
发布于 2015-09-29 06:17:48
在负载更高的情况下,在haproxy负载均衡器后面运行聊天服务器的人很多。在私人电子邮件中向我报告的最高负载(带有stats页面的副本)是每个进程大约300 K的连接(因此是600 k套接字)。请注意,默认情况下,在Linux下,进程被限制为1M文件描述符(因此是500 k端到端连接),但这可以在/proc中进行调整。
在这种负载下需要考虑的最重要的事情是所需的RAM数量。内核端的套接字缓冲区总是每个方向至少需要4kB,因此每个端到端的连接至少需要16 4kB。HAProxy 1.5及更低版本每个连接将有两个缓冲区(例如: 4kB的缓冲区足够用于websocket)。1.6可以在没有这些缓冲区的情况下运行,并且只能将它们分配给与数据的罕见连接。因此,至少是每百万连接16 GB的内存,或者大约24 GB的旧版本。为了减少延迟,在SMP机器上将其扩展到多个进程可能是值得的。请记住,为了简单地建立1M连接,在100 K conns/s条件下,可能需要10秒,所有这些连接每个都会导致一些工作,而处理1M活动连接肯定会导致一个重要的工作和系统的高负载。
https://serverfault.com/questions/725224
复制相似问题