Linux上的Nancy使用100%CPU

时间:2015-08-12 19:16:57

标签: linux mono docker nancy

我的南希网络应用程序一起使用100%的CPU而实际上没有使用它们。

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

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

但是我想,Console.ReadLine()会阻塞,因此只要有一些输入,这个循环就只会执行,而不应该永远。艾米我错过了什么?还有其他原因让南希耗尽单声道的所有CPU吗? - 在Windows开发期间,它似乎运行良好。

更新

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

2 个答案:

答案 0 :(得分:3)

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

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

如果您在前台运行容器,请务必使用-t-i

答案 1 :(得分:1)

高CPU负载是由while循环引起的,因为您没有将当前线程短时间置于 sleep 。像:

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