Linux 上的南希正在使用 100% CPU

Nancy on Linux is using 100% CPU

我的 nancy web-apps 一起用完了 100% CPU 但实际上并没有使用它们。

它们 运行 在单声道的 docker 容器内。我唯一能想到的就是我的主函数中的无限循环,比如

while(Console.ReadLine() != "quit") {}

但我认为,Console.ReadLine() 会阻塞,因此这个循环只会执行,只要有一些输入,这是不应该有的。艾米我错过了什么? nancy 在单声道中用完所有 CPU 是否还有其他原因? - 在开发过程中 Windows 似乎 运行 没问题。

更新:

docker中的应用程序只是从mono NancyServer.exe开始。内存使用率远低于之前的基于 XPS 的版本(50-70MB 而不是 160-180MB),但基于 XPS 的应用程序使用的内存不到 CPU 的 0.1%(也没有真正做任何事情)

高 CPU 负载是由 while 循环引起的,因为您没有让当前线程短时间进入 sleep。喜欢:

while(Console.ReadLine() != "quit") {Thread.Sleep(10);}

如果使用 -t or -i options 的 none,我可以通过在前台启动容器来重现非阻塞行为。在那种情况下 Console.ReadLine() 不会阻塞。

如果使用 -i-t,则 Console.ReadLine 会阻塞。此外,如果我 运行 容器在后台(使用 -d option),Console.ReadLine() 会阻塞。


如果您 运行 您的容器在前台,请确保使用 -t-i