如何在Go中高效处理成千上万的保持连接?

时间:2013-09-06 01:03:26

标签: go load-balancing

使用golang的net / http服务器来处理连接,是否有一种模式可以更好地处理10,000个保持活动连接,每个请求的速度相对较低?

我在Wrk之类的基准测试表现是每秒50,000次请求,而且实际流量(来自实时出价交换)我很难每秒击败8,000个请求。

我知道可以从硬件负载均衡器进行连接多路复用,但似乎可以在Go中实现相同类型的模式。

1 个答案:

答案 0 :(得分:1)

您可以使用JSON RPC之类的IPC协议在本地和远程服务器上分配负载,例如: UNIX and TCP sockets

相关:Go Inter-Process Communication

至于性能瓶颈;它已在go-nuts邮件列表中进行了广泛讨论。在编写本文时,它是运行时的goroutine调度程序和世界停止的垃圾收集器。

核心团队最近对运行时进行了重要improvements以缓解此问题,但仍有改进的余地。引用一个例子:

  

由于运行时和网络库的耦合更紧密,因此网络操作需要更少的上下文切换。