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);}