使用golang的net / http服务器来处理连接,是否有一种模式可以更好地处理10,000个保持活动连接,每个请求的速度相对较低?
我在Wrk之类的基准测试表现是每秒50,000次请求,而且实际流量(来自实时出价交换)我很难每秒击败8,000个请求。
我知道可以从硬件负载均衡器进行连接多路复用,但似乎可以在Go中实现相同类型的模式。
答案 0 :(得分:1)
您可以使用JSON RPC之类的IPC协议在本地和远程服务器上分配负载,例如: UNIX and TCP sockets
相关:Go Inter-Process Communication
至于性能瓶颈;它已在go-nuts邮件列表中进行了广泛讨论。在编写本文时,它是运行时的goroutine调度程序和世界停止的垃圾收集器。
核心团队最近对运行时进行了重要improvements以缓解此问题,但仍有改进的余地。引用一个例子:
由于运行时和网络库的耦合更紧密,因此网络操作需要更少的上下文切换。