Go Evio 应用程序突然没有响应。分析显示所有线程都已停止

Go Evio application suddenly does not respond. Profiling shows all threads have stopped

我们在 docker 中有一个基于 Evio 的应用程序。当 运行 一些网络负载测试时,我们可以看到所有线程突然下降,堆被刷新。超时几秒后,它会像往常一样继续执行。应用程序本身没有重新启动,但所有 Evio 线程都死了 ~5 秒。

什么会导致这种行为?

配置:

Go 1.14
Ubuntu 20.04.1 LTS
Docker version 20.10.6

查看分析跟踪:

问题不在 Evio 或 Go 分析中。经过更多调查后,很明显所有例程都被外部服务阻止了。在我们的例子中,gRPC 连接处于阻塞模式,其他实例无法处理如此数量的请求。

这个视频也很有用。它显示了类似的症状以及如何分析它们。 https://www.youtube.com/watch?v=V74JnrGTwKA