使用 golang 的 net/http 服务器来处理连接,是否有一种模式可以更好地处理 10,000 个保持事件的连接,每个连接的每秒请求数相对较低?
我使用 Wrk 之类的基准性能是每秒 50,000 个请求,而对于实际流量(来自实时出价交易所),我很难超过每秒 8,000 个请求。
我知道来自硬件负载均衡器的连接多路复用是可能的,但似乎可以在 Go 中实现相同类型的模式。
最佳答案
您可以使用像 JSON RPC 这样的 IPC 协议(protocol)在本地和远程服务器上分配负载通过例如UNIX and TCP sockets .
相关:Go Inter-Process Communication
至于性能瓶颈;它已在 go-nuts 上进行了广泛讨论邮件列表。在撰写本文时,它是运行时的 goroutine 调度程序和世界一流的垃圾收集器。
核心团队近期取得重大进展improvements到运行时来缓解这个问题,但仍有改进的空间。举一个例子:
Due to tighter coupling of the run-time and network libraries, fewer context switches are required on network operations.
关于go - 如何在 Go 中有效地处理数千个保持事件连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648278/