Linux上的Nancy使用100%的CPU

我的南希networking应用程序正在使用100%的CPU没有实际使用。

他们在单声道的docker集装箱内运行。 我能想到的唯一的事情就是在我的主要function,无休止的循环,就像

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

但我想, Console.ReadLine()会被阻塞,因此只有在有input的时候,这个循环才会执行。 艾米我错过了什么? 是否还有其他的原因使南希在单声道使用所有的CPU? – 在开发过程中,它似乎运行良好。

更新:

mono NancyServer.exe的应用程序只需mono NancyServer.exe即可启动。 内存使用率比以前的基于XPS的版本(50-70MB,而不是160-180MB)要低得多,但是基于XPS的应用程序使用的CPU不到0.1%(也没有做任何事情)

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

如果使用-i-t ,则Console.ReadLine阻止。 另外如果我在后台运行容器(使用-d选项 ), Console.ReadLine()被阻塞。


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

高CPU负载是由while循环引起的,因为您不会使当前线程在短时间内hibernate 。 喜欢:

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