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

Posted

技术标签:

【中文标题】Go Evio 应用程序突然没有响应。分析显示所有线程都已停止【英文标题】:Go Evio application suddenly does not respond. Profiling shows all threads have stopped 【发布时间】:2021-04-19 16:19:25 【问题描述】:

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

什么会导致这种行为?

配置:

Go 1.14
Ubuntu 20.04.1 LTS
Docker version 20.10.6

查看分析跟踪:

【问题讨论】:

好像没有涉及docker。用裸机应用重新测试。结果是一样的 【参考方案1】:

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

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

【讨论】:

以上是关于Go Evio 应用程序突然没有响应。分析显示所有线程都已停止的主要内容,如果未能解决你的问题,请参考以下文章

使用 QThread 两次单击按钮 2 后 Pyqt GUI 突然没有响应

JVM相关之JVM运行参数和内存模型

如何使用 go 处理多个 xml API 响应结果?

手机应用打不开无响应怎么办

解决VS2015诊断工具意外失败

go lang中局部变量的内存分配