8 ms·
ASP.NET Core – 2300% More Requests Served per Second
- Zekio 11y agoIt is a great time to be a .Net Developer :)
- jordz 11y agoIt is!
- hockeybias 11y agoAgreed!
- snuxoll 11y agoUnless you want to use F#, then it's an awful time because it still doesn't support .Net Core :(
- abrodersen 11y agoI was able to get my F# code to compile using .NET Core yesterday! It's difficult to find the correct project.json parameters and you have to build the latest CLI yourself, but it works.
- snuxoll 11y agoI'm not even concerned about project.json because I don't particularly care for dotnet-cli, so if FSC can target .Net Core that's awesome news :)
- louthy 11y agoI used fsharp-dnx. The problem was it then doesn't support non .NET core targets. So for library development it's a real pain in the arse when you want to build multiple .NET targets (net45,net46,dnx...) with the same project.json. The whole thing is a total mess at the moment, so I'm personally going to stay away from dnx until MS produce something that's close to their old RTM quality releases. It seems there's even a rival system with the dotnet CLI. So I disagree strongly with the OP, it's not a great time to be a .NET developer. The improvements to C# and F#, yes, fantastic. But the ecosystem around it is so brittle at the moment; which is something that we never had to deal with in the past, and was one of the big selling points of the MS ecosystem.
- snuxoll 11y agodotnet-cli is supposed to be a replacement for DNX. Personally, I'm trying to push to get a "classic" system-wide profile for .Net Core so I can just use CMake or whatever and not have to deal with the headache of dotnet-cli.
- pbz 11y agoIt's still in development. In the past you weren't even able to glance inside the sausage factory. If you want something solid then wait until 1.0 is out, preferably 2.0.
- louthy 11y agoThanks for the history lesson. I am fully aware of what stage it's at. I am commenting on the solution and what appears to be a meandering target, with huge holes. It's currently at RC but no support for F#, no support for SignalR, VS2015 tooling is comically bad, cripplingly slow build times, and now a totally new toolchain (dotnet-CLI) that doesn't support the same dependency system that dnx supports. That doesn't sound like a RC to me. I have a general feeling that the RTM standards are slipping massively at MS. Windows 10 was a dog when I tried it - and obviously not finished, VS2015 is very unstable, then the issues above... It feels like stuff is being pushed out the door much earlier than it previously would have been. I do appreciate the direction they're taking, it just feels rudderless atm.
- pbz 11y agoThey may call it RC, but it's barely beta. Recently they said they'd take their time to get it right - less conference driven development. This is a new start, SignalR will come after RTM, so lots of things won't be there. Think of it as version 1 rather than 5. There's currently no VB support either, so F# may take a bit.
- KirinDave 11y agoWould you share this process with us somewhere?
- sremani 11y agoCoreCLR has F# in the active ports section, but asp.net core 1.0, I do not see it, other than VB being post RTM work (in q3 2016). But, if you want to do idiomatic F#, suave.io seems to be the consensus. So things to watch for would be suave.io team using .net core 1.0 (once F# is ported to .net core 1.0) . I would not bet my farm on F# - asp.net Core1.0, anytime soon.
- davidgrenier 11y agoIf you want to use F# it's been an awesome time since 2009, F# rocks. I just switched from a 3 years full-time F# position to a full time PHP dev and let me tell you I'm starting to understand how much of a good time I was getting.
- UK-AL 11y agoHow come you didn't just get another f# roll?
- wintersFright 11y agoYikes. You must have missed the large sign in that career off ramp 'wrong way, go back!'!
- egeozcan 11y agoThat must have been a weird switch. Can't you use something like Haxe?
- ZenoArrow 11y agoIt's being worked on: https://github.com/Microsoft/visualfsharp/wiki/F%23-for-CoreCLR---Status https://github.com/Microsoft/visualfsharp/wiki/F%23-for-Core...
- sjark 11y agoGreat job Ben, the dotnet core team and the asp.net team!
- aninteger 11y agoIt's unfortunate that they don't have the numbers for Linux and instead used the Windows operating system. I'd like to see the Linux benchmark be on par with Windows (or ideally better) but I'm not sure if there is an interest from Microsoft to meet or exceed performance of Windows with a Linux based host.
- ZenoArrow 11y agoLinux was represented on this graph from the article: https://d3renderer.azurewebsites.net/plaintext/v7?src=1 https://d3renderer.azurewebsites.net/plaintext/v7?src=1
- blinkingled 11y agoIt stops between Nov and Dec. Looks like they haven't tested those improvements on Linux or they're Windows specific.
- halter73 11y agoThe performance improvements that Ben Adams and other ASP.NET Core contributors have made haven't been Windows specific for the most part. Personally, I do most of my perf testing on Windows, but that doesn't mean Linux is completely left out. Last month, I did some Linux profiling in our perf lab. As part of that, I ran the exact same benchmark shown in that graph on the exact same equipment and got over double the RPS numbers we got back in November much like we did on Windows. I just updated the https://github.com/aspnet/benchmarks/ https://github.com/aspnet/benchmarks/ repo with the linux numbers I got last month since Ben's blog post has brought some increased attention to it. We plan to do a more complete benchmark run soon so we can update more numbers.
- benaadams 11y agoUpdated graph auto updated by merging this PR https://github.com/benaadams/d3renderer/pull/2 https://github.com/benaadams/d3renderer/pull/2
- MrBuddyCasino 11y agoIt's on! Waiting patiently for the Techempower entry...
- bigdubs 11y agoI remember reading these results a little while ago and thought the numbers were great until I saw the netty results. There is a lot of work left to be done.
- bsaul 11y agowhat were they ?
- jongalloway2 11y agoNetty results are listed on https://github.com/aspnet/benchmarks/ https://github.com/aspnet/benchmarks/ for comparison - latest is 2.8 million requests/s. These are the standard Techempower benchmarks.
- edgyswingset 11y agoTo be fair, almost everything else has a lot of work to do when compared to netty.
- revelation 11y agoScreams micro-benchmark when you can saturate a 10Gb with the server quite readily. If you can't, chances are the problem is somewhere else anyway.
- jongalloway2 11y agoThis is the TechEmpower plaintext benchmark (http://frameworkbenchmarks.readthedocs.org/en/latest/Project-Information/Framework-Tests/#plaintext http://frameworkbenchmarks.readthedocs.org/en/latest/Project...). I'd agree that it's kind of a micro-benchmark. There are other TE benchmarks that test more real-world web application scenarios. My understanding is that the ASP.NET team started at the bottom of the stack and is working their way up. They want to get fundamental HTTP serving basics nailed first. I think that makes sense - they were getting around 170k rps in September, so there were definitely some things to sort out at the basic HTTP serving layer.
- 11y ago
- bsaul 11y agoanyone here could give the ideal dev environment for developping on mac and deploying on linux while programming with asp.net core ?
- SloopJon 11y agoI don't know about ASP.NET Core, but I couldn't get .NET Core to work on my Mac. I installed the "official PKG." I then ran `dotnet restore` for a project I was trying to run (https://github.com/atemerev/skynet https://github.com/atemerev/skynet). It downloaded a couple hundred packages, then failed with an error like, "there is no run-time assembly compatible with osx.10.9-x64." I guess it requires a newer version of OS X, but neglects to check at install time. I continue to use Mono and Xamarin Studio, although I'm stuck on an old version of Xamarin for now because I'm using Mavericks. At some point, I'd like to try OmniSharp with Emacs.
- ZenoArrow 11y agoEasiest way to ease yourself into ASP.NET programming on a Mac is probably to use Xamarin Studio: http://lastexitcode.com/blog/2016/01/01/DNXSupportInXamarinStudio/ http://lastexitcode.com/blog/2016/01/01/DNXSupportInXamarinS... It's free too (use the download link at the end of the page): https://xamarin.com/studio https://xamarin.com/studio
- jongalloway2 11y agoEasiest way to get set up is to run the installers at http://get.asp.net http://get.asp.net - there are installers for Windows / OS X / Linux there. If you'd rather install via command-line, there are walkthroughs for all platforms here: https://docs.asp.net/en/latest/getting-started/index.html https://docs.asp.net/en/latest/getting-started/index.html There's an easy tutorial showing how to dev on OS X using Yeoman and VS Code (free) here: https://docs.asp.net/en/latest/tutorials/your-first-mac-aspnet.html https://docs.asp.net/en/latest/tutorials/your-first-mac-aspn...
- bsaul 11y agoSeems like deplying on linux server is still a second class citizen, am i right ? Different, slimmed down framewoek, not so many resources for using clouds other than azure (didn't find any article for deploying on heroku using official tools for example). That's not really surprising, because ms still got to make some money somehow, but that means i'll have to wait a bit longer to get anything descent on the server side..
- thepumpkin1979 11y agowhat's special in ASP.NET core that allows then to achieve this?
- hhandoko 11y agoAs I understand it, because it comes with less bloat than its predecessors (i.e. more focused library). From the blog post itself: "ASP.NET Core and .NET Core come with the great advantage of only including the libraries and functions you explicitly want to use in your application rather than bringing in the entire framework. So you only “pay”, programmatically speaking, for what you use."
- thepumpkin1979 11y agoReally, that's it? I thought it'd involve something about concurrency, networking or some IOCP magic going on.
- pbz 11y agoThe fastest code is the one that doesn't run. Joking aside, there have been numerous low level improvements with Ben making big contributions - thanks Ben!
- CyberDildonics 11y agoI still don't get why anyone would brag about how poorly they optimized something the first time around.
- davidgrenier 11y agoBecause 1M req/s web severs are just flying about? I'm totally out of date on such thing but last I read we had Yaws built off Erlang and nginx at around 80k? There must really be something I didn't understand here.
- KirinDave 11y agoSome people deeply commit to micro-benchmarks. And sure, netty wins the micro-benchmark. But Java's concurrency model is harder to get right AND fast, so maybe it's a wash for real programs? You can just be assured that ASP.NET is not going to suplex you with poor performance.
- jongalloway2 11y agoASP.NET wasn't necessarily slow previously - for example, StackOverflow is running on it, and they're getting some pretty good perf (albeit with pretty beefy machines): http://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ http://nickcraver.com/blog/2016/02/17/stack-overflow-the-arc... Most sites, even relatively high traffic sites, don't serve 50k requests per second. However, it wasn't granular or modular. For a lot of sites, it was a good balance of features to performance, but in a lot of cases you paid a performance penalty for features you weren't using. That includes the memory footprint penalty - each ASP.NET site loaded up a chunky system.web DLL with the kitchen sink. Back in the day that was fine, but as there are a lot of front-end heavy sites now that use servers mostly as API endpoints, and package managers are pretty standard, devs like to only pay the performance cost (including memory footprint) for the features, middleware, etc., that they're using. That was a big design consideration for ASP.NET Core, and you can really see the results in these specific benchmarks (Techempower plaintext).
- kristianp 11y ago
- dschiptsov 11y agoWas it this bad before?
- livando 11y agoIt makes me happy to see .net developers get nice things.
- swalsh 11y agoI did .net development for 8 years, then moved to Ruby, but recently I started working on a little side business built with .net core targeting deployment on linux. I do most of my developing in Visual Studio Code on Mac osx. Not going to lie, i've had my pain. Dependencies are still hell, getting stripe to work meant taking an open source library, and modifying it... and there's still some stuff I want to use, but haven't gotten working yet. That said the platform keeps getting better, and I love what i'm seeing. I feel like it combines a lot of what I loved, with a lot of what I learned to love in Ruby. Plus Microsoft is offering so many sweet deals with Azure, its hard to pass it up.
- mrspeaker 11y agoPlus, or "only because"? For us it's "only because"... I have no intrinsic loyalty to any provider and am happy to use any - I wonder if there's a difference!
- swalsh 11y agoIf you mean, AWS vs Azure... it's an "only because". Although if they were the same price, i'd still choose Azure.
- ossreality 11y agoAzure has nothing to do with DotNet and DotNet has nothing to do with Azure. Why even bring it up? All it does it perpetuate some really incorrect idea that ".NET runs better on Azure" or that Linux on Azure isn't a thing. It's a thing. We'll happily run your Ruby crap... for cheaper than DotNet and Windows. I mean, by all means, we have much better margins on the Windows IaaS and PaaS... so pad my paycheck, but it flat out doesn't make any sense.