Can .NET Really Scale?
swordfish asks: "Does anyone have first hand experience with scaling .NET to support 100+ concurrent requests on a decent 2-4 CPU box with web services? I'm not talking a cluster of 10 dual CPU systems, but a single system. the obvious answer is 'buy more systems', but what if your customer says I only have 20K budgeted for the year. No matter what Slashdot readers say about buying more boxes, try telling that to your client, who can't afford anything more. I'm sure some of you will think, 'what are you smoking?' But the reality of current economics means 50K on a server for small companies is a huge investment. One could argue 5 cheap systems for 3K each could support that kind of load, but I haven't seen it, so inquiring minds want to know!"
"Ok, I've heard from different people as to whether or not .NET scales well and I've been working with it for the last 7 months. So far from what I can tell it's very tough to scale for a couple of different reasons.
- currently there isn't a mature messaging server and MSMQ is not appropriate for high load messaging platform.
- SOAP is too damn heavy weight to scale well beyond 60 concurrent requests for a single CPU 3ghz system.
- SQL Server doesn't support C# triggers or a way to embed C# applications within the database
- The through put of SQL Server is still around 200 concurrent requests for a single or dual CPU box. I've read the posts about Transaction Processing Council, but get real, who can afford to spend 6 million on a 64 CPU box?
- the clients we target are small-ish, so they can't spend more than 30-50K on a server. so where does that leave you in terms of scalability
- I've been been running benchmarks with dynamic code that does quite a bit of reflection and the performance doesn't impress me.
- I've also compared the performance of a static ASP/HTML page to webservice page and the throughput goes from 150-200 to about 10-20 on a 2.4-2.6Ghz system
- to get good through put with SQL Server you have to use async calls, but what if you have to do sync calls? From what I've seen the performance isn't great (it's ok) and I don't like the idea of setting up partitions. Sure, you can put mirrored raid on all the DB servers, but that doesn't help me if a partition goes down and the data is no longer available.
- I asked a MS SQL Server DBA about real-time replication across multiple servers and his remark was "it doesn't work, don't use it."
the obvious answer is 'buy more systems', but what if your customer says I only have 20K budgeted for the year.
If your client has budgeted 20,000 systems this year, I'm sure they can spare a couple of them for your project.
Sorry...
Sailing over the event horizon
Why don't you just ask MS this question... what? huh? You can't? It's too expensive? They lie? They don't know?
.NET.
Then why are you using
-pyrrho
Using a dual Athlon box with 1G RAM, and a combination of MySQL and an OSS XML-RPC library from Sourceforge we've managed over 1000 concurrent requests without a problem, like the song says, don't beleive the hype, has everyone forgotten how to craft fast, elegant, cheap, well documented solutions, or have I slipped into a parrallel universe where slashdot has been replaced by slashdolt?
Any sufficiently advanced man is indistinguishable from God
I don't have any experience rolling out .NET applications of any size worth mentioning, but I have installed a few Java ones, and let me tell you: what a dog! Users are complaining about the performance, and I'm talking about 5 concurrent users. Not to mention the crap that has to go on the machines in the first place (Oracle IAS or IBM WebSphere) or the time it takes these applications to actually start up. I have yet to understand what the fascination with servlets et al is.
Example configuration is a Windows 2000 box with dual Xeons and 2GB of RAM, running Oracle IAS, connecting to an Oracle db running on Tru64 (Digital Alpha boxes).
Good luck developing a massively concurrent and highly dynamic application in any enviroment for 20k. Regardless of whether you go open source or the ms route you are only going to afford couple of nice boxes, a decent raid. If you scale off of these machines you better have a fat pipe and a load balancing scheme as well. All this costs dollars. Please justify the complaints about ms sql server. Granted there are the functional limitations listed, but name a cheaper database solution that is more robust that ms sql 2k. We run some pretty large database where I work- couple of oracle deployments on quad risk 450 machines. Sure oracle is better, but you pay big time for the improvements that oracle offers. My experience so far is that .NET is not dramatically more or less scalable than the open source alternatives. I'll agree there a lot of good reasons to go open source, but lets all be honest and admit that complex highly dynamic j2ee based applications are challenging tune as well.
I'd suggest a thorough code review and some quality time tuning the application. Or just throw more hardware and more dollars at the problem.
Your clients are cash-strapped, but insist on the most expensive solution imaginable? They deserve to go out of business.
This is just like all those stupid people who work at Wal-Mart or some other low-paying job, but are convinced they deserve to live like they're rich, so they max out all their credit cards and end up either bankrupt or forever in debt to Mastercard.
The fact that there's much better solutions that cost far less, and don't depend on MS's latest buzzword technology which may or may not be around in two years, makes these people even more stupid.
Just use Linux, close your eyes and pretend its
That's a piece of cake.
First, use isql to run a BACKUP DATABASE command from the batch file. SQL Server has plenty of built-in functions to manage date/time for the filename. So does the NT command shell.
Second, use to zip it up.
Third, use blat to email it, or isql again to xp_sendmail it if you don't want to install any other software.
All in one three-line batch file.
Hell, the database maintenance wizard in SQL Server will do most of this for you, minus the emailing part, which you'd just have to add an extra step manually to the end of the job to accomplish.
The whole point of all of this jabbering is that these things can be done easily *if you have the knowledge and experience to do it*. Just because you're ignorant of how to do something doesn't mean the rest of us are, or that it's difficult to do.
If you would read your EULA you signed when installing your windows version, you would have seen that you are not allowed to publish .NET benchmarks without the approval of microsoft!
So now you've challanged the inquisition emperium! You may choose if you want to be drowned or burned...
--
Karma 50, and all I got was this lousy T-Shirt.