My nancy web-apps are using up together 100% CPU without them actually being used.
They are running inside a docker container on mono. The only thing I could think about to cause this, would be the endless loop in my main function, something like
while(Console.ReadLine() != "quit") {}
but I thought, Console.ReadLine() would be blocking and therefore this loop would only execute, whenever there is some input, which there shouldn’t be ever. Amy I missing something? Are there other reasons for nancy to use up all the CPU in mono? – In Windows during development it seems to run fine.
Update:
The application in docker is simply started with mono NancyServer.exe. The memory usage is much lower than the previous XPS-base version (50-70MB instead of 160-180MB), but the XPS-based application uses less than 0.1% of CPU (also not really doing anything)
Advertisement
Answer
I can reproduce the non-blocking behaviour by starting a container in the foreground if none of the -t or -i options are used. In that particular case then Console.ReadLine() won’t block.
If either -i or -t is used, then Console.ReadLine blocks. Also if I run the container in the background (with the -d option), Console.ReadLine() is blocking.
Make sure to use either -t or -i if you run your container in the foreground.