Slashdot Mirror


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.

  1. currently there isn't a mature messaging server and MSMQ is not appropriate for high load messaging platform.
  2. SOAP is too damn heavy weight to scale well beyond 60 concurrent requests for a single CPU 3ghz system.
  3. SQL Server doesn't support C# triggers or a way to embed C# applications within the database
  4. 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?
  5. 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
  6. I've been been running benchmarks with dynamic code that does quite a bit of reflection and the performance doesn't impress me.
  7. 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
  8. 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.
  9. 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."

38 of 653 comments (clear)

  1. Christ, those machine figures! by abulafia · · Score: 5, Interesting

    I hate to say it, I've been too long out of the MS development world. That kind of overhead managed to amaze me.

    I'm deploying systems right now (some buzzword compliant, some (more efficient ones) on lowly little open source, that scale to an order of magnitude higher transaction volume at a fraction of the cost. No, none of them are windows.

    No wonder my company has been doing well in a downturn. (Oh, sorry, we're "recovering" now.)

    --
    I forget what 8 was for.
    1. Re:Christ, those machine figures! by gmack · · Score: 4, Informative

      I hear you.. one of my previous employers had a php/apache system on a dual CPU pIII 500 system with 256 mb ram that easilly handled 500 customers at any given moment.

      Not even a hiccup. then the bright guy tried to do that on windows 2000 for another customer.. choked at about 100.

      I'll take good performance with low spec hardware over the ability to scale on 10+ CPU systems anyday.

  2. What's your major malfunction? by Anonymous Coward · · Score: 4, Insightful

    It's a damn simple question: can .NET really scale?

    Why on earth did you bring open source into it? If the man wanted to know about Linux & BSD, he would've asked.

    If you don't have any experience with the scalability of .NET, I advise you to keep your mouth shut. The signal/noise ratio is bad enough already.

    1. Re:What's your major malfunction? by dabootsie · · Score: 5, Insightful

      It's a damn simple question: can .NET really scale?

      That really isn't the question being asked at all.

      This person doesn't want to know if .NET will provide a relatively non-diminishing gain in performance as more capacity is added, which would be scaling.
      They actually want to know if it will handle a large number of concurrent connections to services on small hardware.

      The real question is:
      Will it handle a lot of clients at once on very little hardware?

      The answer is: No.

      If you don't have enough capital to invest in the infrastructure you need, you have to either find something that will do what you want with less, or give up on the whole idea.

    2. Re:What's your major malfunction? by macrom · · Score: 4, Insightful

      Quit being an idealist and live in the real world here. Linux may be born to do whatever the hell you want it to, but that doesn't change the fact that a customer needs Windows solutions. If a client comes to you asking for help with their Windows systems and you stand there and say "use OSS instead", then you're down one client probably AT LEAST 95% of the time. Maybe a small minority will want to listen to what you have to say, but more than likely they just want to roll with what they have.

      This company doesn't have money for a new beefy server. So what makes anyone here think that this company has the money to :

      1) Take down all of their current systems and install Linux or something similar.
      2) Spend the next several months learning an operating system and related tools that the IT staff may not have experience with.
      3) Spend the time and money to get rid of all of the Microsoft technologies that they use such as Exchange/Outlook, Active Directory, IIS, etc. The TCO is more than just the price of the free software. You have to make sure that you can swap out technologies without impacting your customers or your employees.
      4) Spend the money to train the current staff and/or hire new expertise to administer the new systems.

      The guy at the top that told the parent to basically STFU is right. .NET is a real world technology that TONS of companies are moving towards. Whether you Slashbots like it or not, this is the way that many of our customers are heading. Answer this guy's question to help him out as a fellow Slashdotter or keep your religious preachings to yourself.

      To close, I want someone to respond to this post that has successfully walked into a company that was strapped for cash and wanted some Windows solutions, but then suggested using OSS instead and had the company buy into it. And I'm not talking about your brother's donut shop either, I mean a REAL customer with, say, a minimum of 100 users on a Windows network using AD, Exchange, etc. I think it's only fair to hear the success stories to give some validation to this argument.

  3. well... by confusion · · Score: 4, Insightful

    My first inclination is to recommend throwing that $20k at an ASP that can provide the server infrastructure to give you support for 100 concurrent connections.

    Barring that, my recommendation would be to split the web front end and database, spending about $10k on each (using dell or hpq). I can almost gaurantee that you aren't going to get 100 concurrent connections for less that $80k to $100k without doing some sort of load distribution. If you strip down the amount of dynamic content and say script a refresh of a static page, you might be able to do it, but we don't really know what the app is going to be doing.

    Jerry

  4. Re:Why are they running Windows then? by KrispyKringle · · Score: 4, Insightful
    Based on what?

    A) This consultant, it sounds like, is largely or exclusively MS. He's not going to suggest Open Source software to his client because that will mean a loss in business. You can hardly blame him; you gotta go with what you know.

    B) Oftentimes a commercial solution to some problems exists where a free one does not. The cost of development and maintanance means that the balance is not strictly in terms of free and non-free; after all, your developers' time costs quite a bit as well and home-grown or open source solutions may need more time taken in administration.

    This is a pretty complex issue; different analyses have been done with different results. I myself am partial to Open Source, but this does not mean that the obvious answer is, "Hey, go Open Source! It's free!" Get real.

  5. Re:Why are they running Windows then? by Anonymous Coward · · Score: 4, Funny

    Right. Small businesses want to stay small, and sending all their money to Redmond is one way of doing that!

  6. You've got bigger issues. by Anonymous Coward · · Score: 5, Informative

    First, you didn't really specify anything except in generalities, but there's a few things that pop out from my experiences:

    1. Why are you wed to C#, especially in regards to triggers? How many tiers exist, and are you pumping a lot of data back-and-forth.

    2. Your scaling numbers are low already, especially under ASP and static HTML.

    3. You never really define concurrent requests. For some people, it means simultaneous requests, and for others, it means simultaneous transactions. But you really are looking at fairly low numbers there, in either case.

    4. Scaling this should involve looking at where you choke. One common choke point that keeps killing people is in open database connections. Are you running a pool? How large? How many connections does a page take? The single most common problem I've seen in scaling is poorly implemented connection pooling, thereby causing a ton of stuff to wait. Check this, check, then check again.

    5. Sync versus Async shouldn't really be coming into play yet on the db.

    6. When designing for light-weight systems, you want to minimize the tiers, and minimize the data passed back and forth. Just by reading this, I'm worried that you created a very elegant, but impractical, system that isn't suited to the hardware limitations.

  7. Re:Why are they running Windows then? by tomstdenis · · Score: 4, Funny

    No matter what OS you run you do need people to keep tabs on it. Most users are very stupid [re: running all email attachments] and are prone to damaging computer systems.

    Even if they were using Linux they would need someone around to make sure everything runs smoothly.

    The trick is to multi-task. Once the system is running, a small business sysadmin is not a full time job. They can also program or PR or ...

    Also the benefit of not using MSFT tools is the weaker propagation of acronymedics. E.g. I can code DOM SOAP .NET ASP super programs. oh yeah

    10 print 'hello world'

    L33t!

    Tom

    --
    Someday, I'll have a real sig.
  8. Can my car go really fast? by SamBeckett · · Score: 5, Insightful

    This entire story is lacking units.. I am so confused, it is like this...

    "I bought a 400 car from my dealer, who said it could go 0-1200 in 57, but I talked to an auto mechanic and he said that the rpm throttled at 4.5 billion, so I don't know if I should get a turbo charger which would at least boost the speed to 1295!!"

    If you are talking about 100 concurrent request per second: Any DB worth its salt should handle that IFF the database queries aren't too complex. If they are, your schemas suck. This is doubly true on a 3 GHz machine.

  9. Are you asking about .NET, or something else? by Brento · · Score: 5, Insightful

    2. SOAP is too damn heavy weight to scale well beyond 60 concurrent requests for a single CPU 3ghz system.

    It doesn't sound like you're talking about .NET specifically, but just SOAP in general. Make sure you separate out the platform from the product. Saying web services with SOAP won't work is a long way away from saying .NET doesn't scale.

    3. SQL Server doesn't support C# triggers or a way to embed C# applications within the database

    Embedding applications in the database violates basic scaling principals: you need to separate out into n-tier, right? You don't want the database server doing anything but serving databases. Now, having said that, Yukon (the next version of MS SQL) will indeed let you do certain things in the database with .NET languages, but that's rarely going to be a way to make your system run faster and scale more. Plus, I'm confused - what's your alternative? What database are you going to recommend that allows you to embed C# (C++, whatever) programs in the database itself?

    9. 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."

    Sounds like it's time to get a more informed consultant who can demonstrate failure or success beyond a throwaway line. I'm not saying replication does or doesn't work, but you can't base your enterprise plans on a single line from a single guy - let alone strangers like me on Slashdot. Furthermore, this isn't a .NET question, it's an SQL question.

    It's easy to make big decisions if you break them up into a series of smaller ones. Look at each of your questions and decide if it pertains to .NET, or just a particular product. You might go with .NET and not use MS SQL Server, for that matter.

    --
    What's your damage, Heather?
  10. Re:Why are they running Windows then? by ThatDamnMurphyGuy · · Score: 5, Insightful

    People in SMALL business do not want a system which requires them to hire someone to constantly keep tabs on it.

    What?#$#@ I don't care who this "SMALL" business may be, but if you put a server on the internet, and plan on not having someone to "keep tabs on it", please, get off of the f-ing internet. It's that type of mentality that yields the servers out there that STILL are spreading Code Red and Nimbda, because nobody has kept tabs on these infected servers in years.

  11. .NET Benchmarks by fine09 · · Score: 5, Informative

    Hello,
    I have been Developing a .NET Portal Application for the past few months. I ran a quick Test on our application just to see how it would run.
    Specs Are as Follows:

    App Server:
    Duron 800
    512 MB RAM
    40GB HD 7200RPM


    DB Server:
    Celeron 500
    640 MB RAM
    20GB HD 7200RPM


    As you can see, these are not server class machines, but they seem to run the app alright. I ran a simulation of this application based on the IBS Portal www.asp.net running 150 Concurrent Requests Per Second:

    The average Requests per second on this app were 98.51. So, IMHO on low quaility hardware, the .NET platform can handle about 100 Requests per second before it starts to get hot.

  12. Scale the Requests Down by mmurphy000 · · Score: 5, Insightful

    You're bound to get lots of responses of how to scale the system up. I'll focus on scaling the requirements down.

    Unless the transactions are really long, "100+ concurrent requests" as a sustained rate is a lot of activity for a small business. So, that begs questions:

    -- What percentage of these Web service requests are read-only "query" style, and can you use application-aware caching to return results out of RAM instead of having to hit disk for each one?

    -- What is the client to this application, and can there be ways to help induce a smoother load from them (e.g., discount rates if the application is used in off hours or on weekends)? Or is the 100+ concurrent requests going on 24x7?

    -- Do all the requests have to be filled by the server, or can you blend in some P2P concepts so the clients can absorb some of the load?

    -- Can you increase the amount of data handled per transaction (perhaps by switching to document-style SOAP or REST instead of RPC-style SOAP) and thereby reduce the number of requests and excessive message parsing and marshalling?

    There's probably a bunch other things to do as well, but those came to mind off the top of my head.

  13. Re:Why are they running Windows then? by Atzanteol · · Score: 4, Insightful

    If this guy is a consultant, sometimes clients have specifications for what type of hardware/software is used. Especially if their own IT group will be maintaining the systems.

    --
    "Ignorance more frequently begets confidence than does knowledge"

    - Charles Darwin
  14. Re:Java is a DOG by the+eric+conspiracy · · Score: 4, Insightful

    Example configuration is a Windows 2000 box with dual Xeons and 2GB of RAM

    I wrote and administer a J2EE application that supports online rebate offers for a very large company. We have over 350,000 registered users and typically 500 simultaneous sessions on a dual 1 GHz PIII Linux box with MS SQL Server on a similar dual CPU W2K box for the database.

    Whatever you are doing with your application (probably misapplication of EJB) is wrong.

  15. On any properly implemented system... by rcw-home · · Score: 5, Insightful
    ...the overhead of the framework for your code contributes only a small percentage to the total system load.

    In other words, it's not what you're using to do it, it's how you're doing it. If you're just pumping out files to clients on modems, 100+ concurrent requests isn't much. If those requests are all CPU-bound, I hope they're all niced or set to a low priority, otherwise you won't be able to log into the machine in a reasonable amount of time. If it's 100+ concurrent connections, but those connections aren't necessarily waiting for a response (just idle until the user does something) then you might not even care.

    How many whatevers you have must always be qualified by knowledge of what those whatevers are doing. Otherwise your whatevers won't fit in your $20k thingamajig. And then Mr. Bigglesworth gets upset.

    Of course, whether .NET is a properly-implemented system is a separate debate...

  16. Re:Why are they running Windows then? by nvrrobx · · Score: 5, Insightful

    Argh, I hate to give up moderation rights but I have to chime in here.

    A small business CANNOT afford to employ a full time UNIX administrator. Open source solutions just do not have the ease of administration of the Windows GUIs. Until they do, they will not be small business friendly. Windows Small Business Server provides you with one installer that will basically set you up completely (Exchange Server and all).

    Now, before you flame me out for being pro-Microsoft, you should know that almost all my machines at home run Gentoo Linux, and I prefer to use Linux myself.

    I had a long discussion with a good friend who is not terribly computer literate. Linux drives him _crazy_ because he can't just, "point, click and go" as he said it. Until these issues are resolved, we won't see small organizations without dedicated IT staff rolling out Linux installs.

  17. Re:Java is a DOG by phnx90 · · Score: 4, Interesting

    I got to tell you its probably not java more the actual application server and/or the application. We use ATG Dynamo, and for that we get what we pay for: More than 4000 concurrent users ( active sessions ) per Dynamo instance with out any problems). Although with Version 6, they've decided to go all J2EE Buzzword compliant and complicated the entire setup.

  18. Re:Hmm so Linux is cheap by the+eric+conspiracy · · Score: 4, Insightful

    newcomers are really, really cheap!

    LOL. Newcomers are the most expensive programmers there are because they draw a salary, but don't write usable code.

  19. Ackward Worries, Threading and Responsiveness by metacosm · · Score: 4, Informative
    Well, first of all -- you really didn't give us enough information to give a good answer, but -- it is a slashdot question, and getting all the info would ruin half the fun!

    Anyway. If you can't support 100 requests a second on 50k of modern hardware, you have huge design issues and other problems. Just from your short description of the project, I fear you have crawled into over-engineered land because alot of the technologies are much more useful on seperate boxes/distributed enviroments.
    • #1. MSMQ is mature. I have seen no evidence that it won't scale. How many messages are you planning on piping through it per request? Why do you need MSMQ for an application running on a single box?
    • #2. SOAP is "heavy-weight" -- I guess I would have to ask what "light-weight" item are you comparing it too? The number you dropped is utter bullshit, but their is going to be an upper limit to it.
    • #3. Yes, SQL Server doesn't support C# triggers or embedding C# apps -- WHY THE HELL WOULD YOU WANT THAT -- seperate your database from your application. Lots of the technology you mentioned in your question are for seperating layers, and then you wanna do something SILLY like cram C# into the database.
    • #4. All requests are not even close to equal, it totally depends on the quality of your requests/stored procedures, how normalized or denormalized your data is -- and how intelligent you DBA is.
    • #5. Very fuzzy question, but on 50k of hardware for a custom develop internal app -- you should be able to scale. Again, how stuff scales depends on how it is written.
    • #6. Uhh, ok, not really a question. Maybe avoid reflection. :)
    • #7. Ummm, just ran a local test on an MS box (2k3) and my numbers didn't drop nearly as much -- check you settings. I went from around 290 rps to 180 rps.
    • #8. Good DBA, optimize stored procs, get the data cached, use sync calls.
    • #9. It used to not work, I have recently got it working, but I still don't trust it, and most DBA's I know don't trust it either. But, test it out, in most of the cases were this is needed/used -- work arounds a very human-work intensive and often work like crap.


    Good Luck. Remember that C# Web apps can be multi-threaded, and remember to optimize the parts of your application that MATTER. A wise man once said "Premature optimization is the root of all evil". Find the slow parts, fix them, get the most bang for buck. Also, remember to keep those pieces loosely-bound to each other, no C# code in the DB!

    --MetaCosm
    P.S. I hope you haven't over-engineered this tool as badly as it sounds like you have :)
    1. Re:Ackward Worries, Threading and Responsiveness by Dasein · · Score: 4, Informative

      I have to pick a nit on someone and you're in the wrong place at the wrong time.

      A lot of folks are lambasting this guy because he wants to do C# inside SQL Server. Most are saying, like you, that he just doesn't get it because you should separate the database from the application. That's true but it doesn't invalidate the need to have stored procedures (in any language you want be it PL/SQL or C#).

      The idea behind a stored procedure is that your application may actually scale better by putting some of the logic "close to the data" because there is less contention for machine resources other than CPU.

      For scalability, it's *generally* true that you want no processing to happen on the database because database servers are generally more expensive to scale. However, moving selected bits of logic to the database tier can result in huge scalability improvements.

      It's not one-size-fits-all and unless you have a good working understanding of the problem, which is impossible with the data given, it's probably not a good idea to yell "WHY THE HELL WOULD YOU WANT TO DO THAT" at someone. Give the guy the benefit of the doubt.

      If you think that stored procedure in C# (or any .NET language) isn't going to happen, you haven't been paying attention.

      --
      You are not a beautiful or unique snowflake -- but you could be if you got off your ass.
  20. Re:Why are they running Windows then? by zulux · · Score: 4, Insightful

    A small business CANNOT afford to employ a full time UNIX administrator.

    They can't affor NOT to: We service many small compaines who use Windows desktops connected to UNIX (OpenBSD firewalls, FreeBSD servers). The savings in time alone are staggering:

    Real example:
    One office of ten accountants has been managed by me lasst year for under $3000.
    They have offsite backups, a PostgreSQL databe, Samba file serving, 56K nat, Firewall, email filtering.

    If (and its a BIG if) one of the servers has a problem - I can remotly fix it over my cell phone connection, and I don't have to charge them travel time. If it was Windows - I'd have to drive there.

    Windows is expensive because it requires full time baby-sitting. UNIX, once deployes is usuall fire and forget.

    --

    Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.

  21. Yes, .Net can scale--IF... by John+Murdoch · · Score: 5, Informative

    Hi!

    Executive summary:
    Yes.

    Boring details:
    I'm goofing off, perusing SlashDot at the end of a dinner break. We're shipping a big project to a customer on Monday--the project is written in .Net (mostly C#, some components in VB), including Windows forms and ASP.Net web pages. (Why both? The project incorporates multiple applications for different kinds of users.) As part of pre-shipment testing we're in the midst of extensive testing, including load testing.

    The Windows applications communicate with the data tier using SOAP/XML, using synchronous messaging. Practically every message involves a database transaction with SQL Server 2000. Across a range of loads we are seeing round-trip message responses (from receipt of the inbound XML message to return from the web service) averaging less than 90 ms per message. That 90 ms average can be misleading--some of our messages involve extensive processing and/or lots of data. Some of the transaction work we're doing with SVG images involve SOAP messages with payloads greater than 1 MB, so the average gets dragged out.

    Based on our testing, we anticipate supporting hundreds of simultaneous users--in a near-real-time environment--from a single web service. As we scale out on larger projects we may need to scale the number of web servers (although IIS on Windows 2003 is supposed to be substantially faster--YMMV), but we won't need to scale the database. Using a similar messaging architecture for a different client I have a project supporting 400+ users on a single SQL Server.

    This is SlashDot, after all...
    Obviously you're going to get a lot of "why not use...?" posts, and I'm sure I'll get flamed for having the temerity to admit to using .Net. And recommending it. But you asked, so I'll answer: .Net is scaleable in terms of the final application, and .Net is scaleable in terms of the size of the development team that is involved. This project involves 19 developers (a total of 60+ individual projects in the nightly build) and we're able to manage the entire thing remarkably well. Developing web service applications with .Net is remarkably easy to do; developing sockets apps is unbelievably simpler than using WinInet.dll. And the web developers are extremely happy working in ASP.Net--I don't know where you heard that ASP.Net is slower than ASP, but that's simply not true. ASP.Net is significantly faster.

    With regard to other comments
    I'm the data/messaging architect on the project: I can speak to the comments about messaging, reflection, and SQL Server. As with any Microsoft-based development project, you have to think carefully, and think critically, about how to design your application. Microsoft will always give you a quick! easy! fun! way to rapidly produce a prototype. You have to dig deeper, and think harder, to produce a scaleable application. The quick! easy! fun! technology du jour is .Net Remoting. Quick to prototype, barks in production. Like OLE, it's a great way to make a Pentium 4 box emulate an original 8086 IBM PC. (Far smarter to manage communication with XML-based messaging. It just takes more coding.)

    That SQL Server doesn't permit triggers to be written in C#--so? Transact-SQL is suitable for database development. We could ask for more (such as integrating stored procedures and other database code into Visual SourceSafe). There is talk that the next version of SQL Server will permit coding in .Net languages--that'd be cool, but I'll wait and see.

    The single most compelling argument for .Net
    Mono--an Open Source implementation of the .Net Framework. You might look into this particularly for clients that are choking on server pricing--but you might also pay careful attention, because a robust Mono project will encourage/force Microsoft to compete on features and functionality, instead of a take-what-we-give-you mentality. That's a Very Good Thing.

  22. Re:Why are they running Windows then? by digidave · · Score: 5, Insightful

    A common misconception is that anybody can administer an MS server, but the truth is that it's not a whole lot easier to do than administer a Unix box. What's scary is that it looks easier and most IT managers think it's easier. That's why most Windows admins are grossly incompetent, especially when it comes to security.

    A good Windows admin costs the same as a good Unix admin.

    --
    The global economy is a great thing until you feel it locally.
  23. Re:Why are they running Windows then? by Alioth · · Score: 5, Insightful

    I had a long discussion with a good friend who is not terribly computer literate. Linux drives him _crazy_ because he can't just, "point, click and go" as he said it.

    Windows systems need an administrator every bit as clueful as a UNIX sysadmin if they are to have any reliability at all. If the Windows 'sysadmin' has to be able to point-click-go to be able to function, in all probability the Windows system will be unreliable and insecure.

    It is a false economy to think that "It's Windows. I can hire a junior reboot monkey to admin the system" - a Windows system really does require a sysadmin every bit as competent, skilled and clueful as a Unix system. A Windows system can be very reliable with a clueful admin - but it *needs* a clueful admin. Companies are shooting themselves in the foot if they think otherwise.

  24. Re:Why one server? by etcshadow · · Score: 4, Insightful

    There are actually lots of reasons. Not to say that in all cases you *should* go with a big server instead of a bunch of little weeny-boxen... but the point is that "bigger server" doesn't equal "bad". Here's a few reasons:

    For one, there's reliability:

    -first of all, the more expensive systems have more internal redundancy, which is a good thing (sucks to hamstring even a cheap $1000 machine because the $5 cpu-fan dies, let alone a $3000 middle-of-the line machine because a $50 power-supply dies... or the $5 fan inside the $50 power-supply).

    -if p(c) is the probability of a cheap machine crashing, and p(e) is the probability of a single expensive machine (your entire system) crashing, and you require all N of your cheap computers to be running in order to consitute an "up" system... then your overall system crash probability (p*) is:

    p*(c) = 1-(1-p(c))^N

    vs.

    p*(e) = p(e)

    so, by buying more, cheaper servers, you're increasing your crash-likelihood, by both increasing p(c) and increasing N (unless you buy additional cheap servers to failover to... but then you have to manage and support failover which is additional $$$ as well in terms of buying/developing/implementing more advanced systems and taking on a higher administration overhead).

    Not all systems are distributable, and those that are are often more complicated and/or expensive (but not always).

    There's also administration cost:

    -Obviously its easier to manage one box than 10 (or easier to manage 5 boxes than a hundred). Not to say that there aren't nice tools for mass-administration... but it is still more work, and anyone who says different is selling something (and something you want to think twice about before buying).

    There's ancillary costs:

    -hey! if you have ten boxes talking to each other to comprise one "system", then you need a network connecting them! That's another fast switch... and again, because you don't want to lose an expensive "system" because of a failure of one cheap part, you need to buy an expensive switch.

    -power costs money, believe it or not.

    -so does rack-space.

    -so do IPs... unless you're gonna NAT your little cluster, in which case you need to set up a NATing router for them... and that's another single point of failure unless you wanna shell out $$$ of one form another (again: buy/develop/implement).

    -you're probably gonna need some sort of KVM switch.

    I could go on, but I don't want to. Anyway, the point is that it is more complicated than many of the lot in this particular audience are likely to make out. It is often still the best route (and increasingly so!), but you can't just say that the answer is *always* to buy more, cheaper machines. There are many things to consider.

    --
    :Wq
    Not an editor command: Wq
  25. Re:Why are they running Windows then? by j3110 · · Score: 4, Insightful

    Actually, we supply a lot of small businesses in our area with whatever tech support they need. Kind of an outsourced IT staff. Paying us to fix things is as cheap as paying an MSCE monkey to spend 8 hours to fix a 5 minute job. We support OSS, so they save on licensing too. We even have a software team to make custom software, then release it open source.

    The point is, they should be looking for the right service. You don't need dedicated staff with open source software. We get a call maybe once a month about an OSS product gone bad (usually something silly that can be fixed in 5 minutes if you know what you are doing), and we ssh in and fix it. We get calls about MS products and idiots that don't turn on things before they want to use them from 8AM till close every day. I'm pretty sure that most of our clients have spent more money on MS related tech support than OSS related tech support. I can calculate right now that the TCO for a pirated MS product would still be greater than a OS product by a significant factor. The speed at which MS products have to be fixed/patched is very much greater than a properly configured Linux system, and you're paying for that hell to boot.

    If you want to shoot yourself in the foot by jumping on the .Net train before you can see where the tracks are going, then you go ahead. As for me, I plan to use as much cross-platform programming (mostly Java because the GUI is the same everywhere) and free/open source software that I possibly can, mostly because the products I use like JBoss (Free J2EE), Samba, MySQL/PostgreSQL/SAP/Firebird, etc. are more stable than .Net, Windows, MSSQL, etc.

    Before those of you that say the SQL Server is actually good start flaming me, that's where a lot of headaches come from. SQL Server drops records and corrupts more than MySQL before transaction support. (There, now I'll get flames from both ends.) Also consider the price you are paying. (Per connection last time I checked.) Spend more money on the hardware and get RAID-1 on good disks and a good UPS, and you will have a faster, more reliable RDBMS.

    --
    Karma Clown
  26. Re:Why are they running Windows then? by 4of12 · · Score: 5, Insightful

    telling those companies they don't just have to buy

    TANSTAAFL.

    No matter what you'll have to layout cash to buy the three essential ingredients:

    1. hardware
    2. software
    3. people to support and maintain the hardware and software

    Microsoft marketing would have you believe that their software solves all your problems and that lots of cheaply available people can do the job. They'll still charge you for their software and you'll find out that hardware still costs something and that getting good people to support and maintain your software and hardware is more expensive, but worth it.

    Linux advocates will tell you that the software costs zero and that any competent sysadmin can do the job. You'll find out you still have to buy reasonable hardware. And you'll find out that getting good poeple to maintain and support your hw and sw costs more, but is worth it.

    Any way you go you're gonna pay.

    --
    "Provided by the management for your protection."
  27. Re:What?! by zulux · · Score: 5, Interesting


    What?! You've never heard of any of the following: -- Terminal Services -- VNC for Windows -- Remote Desktop commercial programs


    Yes I use them all the time, but when I'm on the road I have to manage servers over my CELL PHONE coneection. Window Termmial Services is unsuable in that situation.

    Here's an example:

    With UNIX I'm in Ireland (I'm usually based in the US) and I get a call "We just got a new user, could you add them"

    I whip out my Ericcson 68i and Sharp Zaurus - and ssh into the server and run a script to add the user.

    With Windows: I have to find a "Internet Cafe" pay 10 Euros, and convince the owner of the cafe to let me install VNC. Then I get to S-L-O-W-L-Y use the gui to add the user.

    It get's even better - I can remotly manage my servers in the absolute wilderness with an Iridium satelite phone and a Zaurus with a serial cable. At 9600 baud, I can do it with UNIX - but Windows, forget about it.

    --

    Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.

  28. Re:Why are they running Windows then? by KrispyKringle · · Score: 4, Insightful
    I think you're missing the point. First, nobody said he wasn't smart enough. He was just comparing options. My point was that the comparison is worth making; there is no valid way to say, "OSS is always better and cheaper."

    Furthermore, and I don't know much about .NET, he was also looking for an SQL backend. You mention "Linux, apache, PHP, whatever" and "some servlet engine, jsp, etc" without seeming to really understand a couple of crucial points: the "Java one" would still need an OS and webserver, and all three still need a database server. Really fancy, high-volume DB servers such as Oracle cost a lot. So then we end up comparing, say, MySQL, MSSQL, mSQL, and PostgreSQL? Or Perl, PHP, ASP, and JSP/servelets? I'm sure I'll get flamed by zealots, but those aren't always easy comparisons.

    Write it off as ignorance if you like. It doesn't sound like you're a professional in this field. But so what if he is ignorant? That was my point; if he is best with MS, it's not going to be profitable for him or his client for him to be mucking about with Unix instead.

    As for the amount of money you'd save, well, I already commented on that. Sometimes the figures aren't necessarily what they may appear to be; the initial layout is certainly greater with commercialware, but support, time spent on maintainance and deployment, and so forth, is sometimes a lot less.

  29. Ignorance is no excuse. by SlashChick · · Score: 5, Insightful

    Install an SSH server on Windows and you'll have much of the same functionality as UNIX through the command line.

    " With UNIX I'm in Ireland (I'm usually based in the US) and I get a call 'We just got a new user, could you add them'. I whip out my Ericcson 68i and Sharp Zaurus - and ssh into the server and run a script to add the user."

    Did you even bother to check out whether this was possible in Windows? I guess not: this site shows you how to add a user from the command line in Windows. In fact, you could even write a script to do that (batch files... remember those?) In fact, here are lots of handy other things you can do from the command line in Windows, including changing user passwords, forcing users to log off, and more.

    Once again, ignorance of what Windows can do is no excuse. I administer 16 Linux boxes... I'm not anti-Linux by any stretch of the imagination, and I know that there are lots of situations where Linux is the better choice. But that still doesn't mean I'm ignorant about what Windows can and can't do.

    1. Re:Ignorance is no excuse. by abigor · · Score: 4, Funny

      Since you are a Windows command line expert, I need to ask you some questions.

      Could you please show me how to do a multi-file search and replace from the command line? That is, multiple files in arbitrary directories where I need a certain string replaced with another string.

      Also, I'd like to count the number of lines in all the files in a directory tree (with nested directories, of course). Please show each file, with its line count, on a separate line.

      Finally, I need to know how to kill processes that were started by a certain user - but not just any process. Just the ones that are currently using 0% of the CPU.

      All of these should be able to be done in a single command line - no scripts - sorry, batch files.

      Thanks!

    2. Re:Ignorance is no excuse. by RoLi · · Score: 4, Insightful
      The other poster may be ignorant of what Windows can do, but you are ignorant of reality:

      • You have to install lots and lots of extra stuff on Windows to make it work over ssh. Installing that costs time and money.
      • Just like the other poster, nobody uses Windows over ssh because of the above point. If you have any questions you are unlikely to find the answer on newsgroups etc. because there are so few people knowing it. Of course you don't get any support from Microsoft
      • Often you don't know that you need remote access in advance. Assume you are on holyday and a problem on the server arises. - On your Windows default install, you are screwed, on your Linux default install it's no problem.

      So yes, it is possible to administer Windows over ssh, it's just a pain in the ass compared to Linux, sorry.

  30. Yes by bmajik · · Score: 4, Informative

    A guy down the hall from me was in charge of taking customer web apps written in V6 technologies (vb, asp, etc) and porting them in several ways to .net. They did extensive scalability testing on these apps. They measured requests/sec vs # of cpus, etc etc, to see how asp.net utilized multiproc machines.

    What im saying here, is that you are not the first person to ever consider how .net might run for database driven web apps, of an arbitrary size. Infact, much of it is designed for _exactly_ that.

    Re: SQL server 2000
    SQL server 2000 has more performance then you know what to do with, even on non-ridiculous hardware. Give it processors with lots of L2 cache (xeons) and lots of ram, and read all the docs about keeping MDF and LDF files on separate volumes (as well as tempdb) and you'll find that life is thrilling.

    Data point: On a quad HT P4 Xeon with 8GB of ram and 12 spindles (a significantly less than $50k box) we support 1800 simultaneous connections, doing OLTP work against a ~15GB database. The most commonly hit table in the system has about 10 million rows that get added and deleted in batches of between 20 and 10,000, and updated singly or in bulk. Other apps select from this table on a polling basis (i.e. decision monitors). We could make our db and app design much "better" w.r.t performance, but we don't need to - the money we save not having to do genius level feats of programming, app rewrites, and perf tuning more than pays for the occasional new hardware or upgrade.

    Continuing, Run perf monitor on your SQL server machine. Look at the physical spindle(s) that hold your MDF. If you're reading from them, buy more ram until you're not :) Look at the I/O per sec rate to your tempdb disks and primary LDF disk(s). It is seriously to your advantage to go with an individual spindle for each role, because IO rate is what is so critically important to SQL server. Also, avoid RAID5 like the plague, as it decimates IO Rate.

    You can tune SQL server without application changes until you're blue in the face, honestly. Use profiler to see what kind of queries you're doing. Put those queries in Query Analyzer and show the execution plan. QA breaks it down for you and shows execution time percentages of each sub-tree of the execution plan. If you've got something eating 80% of your time and its doing a table scan, do whatever you can to put some selectivity in that query (i.e. an index, or maybe a query change).

    If you want to save yourself some headaches, setup management tasks to recalc indexes over the weekend (or nightly, if you see that much index fragmentation after a day).

    --
    My opinions are my own, and do not necessarily represent those of my employer.
  31. Stop Using WEB SERVICES! by His+name+cannot+be+s · · Score: 4, Insightful

    Holy mother of fscking god.

    STOP USING WEB SERVICES.

    #1) If you are using the [WebMethod] shit and hosting your SOAP calls via IIS you need a smack in the head.

    #2) If you are using SOAP to communicate between the layers of your application, and are not exposing the SOAP methods for external consumers of the web services, You need more smacks in the head.

    #3) If you don't know what you are doing, hire someone who does. (and by the sound of your point #6 about using reflectiona and dynamic code in the production app, you don't.)

    If you are in .NET and you *NEED* a remote facility between your layers, (And if you were working for me, you'd damn well prove it), then for the love of god, switch to Remoting. Don't know what that is? Grab a book, dumbass. You can use a binary formatter and jump your speed by an order of magnitude, or you can fall back to a SOAP formatter on remoting and still double your performance.

    If you don't *NEED* a remote facility between the layers, stop using SOAP, or any other remote procedure calling solution. Nothing pisses me off more than bandwagon jumping know-nothings using a fancy fucking hammer to solve a problem which requires far less.

    It would appear the largest problem you have in overcomming your problems with .NET is your own stupidity. No matter if you are on .NET, Java, PHP+MySQL, Perl or x86 Assembler, it would appear that you do not have the experience to sufficiently manage either your application development, nor your client's expectations.

    Bottom line: To support 100+ concurrent requests, There is no way that you shouldn't be able to do that for under 20K... (although I wonder where that number came from.. Do these servers sit in a vacuum? Who's running them?)

    From a purely acedemic standpoint, what the heck were you guys thinking when you were going to spend only 20K on the hardware for an app that does 100+ concurrent transactions. That sounds like enough business to afford quite a heck of a lot more.

    If you are/were so budget constrained, why are you spending at thousands on server software? (.NET server, SQL Server, etc...) If you are so budget constrained, you shoulda bought opensource.

    --
    "...In your answer, ignore facts. Just go with what feels true..."
  32. A short guide to scalability by Earlybird · · Score: 5, Interesting
    The term scale in this context refers to the capacity for the software to meet growing requirements.

    In other words, if you define a target performance metric and find that a single user can access the system at better or equal that speed, then a system can be said to "scale" if it still performs within that metric, on average, when 20, or 50, or 100, or whatever users are accessing the system.

    Of course, due to the nature of computing systems, any system will hit a point where it will no longer scale to the requirements with the same hardware configuration. At that point we start talking about scaling upwards through hardware upgrades. But you can only upgrade hardware so far, at which point, again, the system will reach a hard limit on its ability to perform as required.

    The next logical step is to scale through redundancy: If a system can, in whole or (more commonly, as in "multi-tier" web clusters) in part, run concurrently in multiple instances, then you can scale by adding more instances of the system or system components: Multiple web servers, multiple "back ends", multiple database servers, and similar. This kind of organic scaling can be, in practical terms, near-infinite if a system is designed well; for example, multiple mirrored web servers serving static pages will scale indefinitely, whereas a trading system requiring inter-process synchronization through a message-queue system will most likely not.

    In scalability terms, efficient redundant clusters is the holy grail. It's the way Google scales, and it's how the core parts of the Internet scales.

    In the context of this Slashdot story, since the poster faces limited possibilities for investing in expensive hardware, he might consider going for the "many cheap boxes" route, if his Microsoft-dominated infrastructure permits it.