Ryan Britton - 13 - Mar 22, 2015

Have you seen these benchmarks, Demis?
Why is ServiceStack featured so low (especially in the JSON serialisation department)? Would it be worthwhile to delve into their repository and see if they are creating a performant implementation of the relevant tests? in some instances the tests did not complete, or registered a very high occurrence of errors?

Surely they must be missing something?

Nicklas Laine Overgaard:

It’s most likely because it’s “servicestack on nginx”, which means Mono. I have had very bad experience in general with running .net apps on Linux via Mono, including servicestack. Would be interesting to see that test with servicestack on a Windows box.

Yes many times, it comes up a lot, and was originally discussed in 2013: 

This is why I don’t recommend running production ASP.NET sites on Mono, the perf is horrible and it has stability issues when you hit with an apache benchmark (i.e. dead-locks/cpu spikes). Given Xamarin’s mobile focus I don’t think we’ll ever see the Mono situation improve, which is why IMO Microsoft’s support of Linux is the only viable option for running production .NET  sites on Linux in future.

Note the HttpBenchmarks LiveDemo is already built around these benchmarks: 
https://github.com/ServiceStackApps/HttpBenchmarks here are the benchmarks the last time it was run on my macbook for different ServiceStack Hosts: 

Also note these aren’t thorough benchmarks, e.g. the JSON serialization is just to emit the JSON string: {“message”:“Hello, World!”} - which isn’t going to provide any meaningful results.

Ryan Britton:

awesome…thanks Demis. I think I was thrown because I read that you were hosting the ServiceStack site and all the Demos on Mono (unless I misread)? I’m guessing this is as a result of cost benefits rather than performance?

Yeah cost benefit, also I was expecting Mono to improve over time as more people started using it, sadly this hasn’t happened so from v4 I moved servicestack.net and all live demos over to AWS and only run ASP .NET on Windows and just leverage Linux for Infrastructure services. It’s a good strategy that also works well for StackOverflow, e.g. Windows for .NET/SqlServer and Linux for everything else.

With the cloud commoditizing computing I’ve just started running the best services/setup for the job, for .NET that’s Windows (until its proven otherwise) and basically Linux for almost everything else.