Microsoft Asp.net 2.0 Performance.

I came across this article today about digg.com's server setup. Digg.com is doing 200 million pageviews a month and has 3 webservers and 8 database servers. 

Dating for the most part has been a brutal industry in terms of hardware required. AmericanSingles Quarter filing shows just how bad it is.  34 person development staff, and another 30 person team to maintain hardware and software infrastructure. In total americansingles.com has 202 full time employees, in another filing it states they have around 200 servers. This results in over 1 million a month in tech/software expenses according to the SEC filing, not bad for a site that has less then 200 million pageviews/month,  note that lavalife, match.com and anothers have similar numbers.

I didn't know any of this when i created my site. When I created my site I started it in Asp.net 1.0  because I needed to learn it if i ever wanted to work at a decent job.  Asp.net 1.0 worked fine until I got around 12,000 concurrent connections. 

At this point there were a lot of concurrency issues,  the site would slooow down and just keep getting slower as more people came on. After switching to asp.net  2.0 all those problems went away.  Now when there are over 32,000 concurrent connections at peak the site does not slow down.   There are however still problems.   I find that once you pass 100 Pageviews/second threads timers start to not get called for no reason.

I've attached some stats that show plentyoffish at average usage.   The site(plentyoffish.com and Forums.plentyoffish.com) serves ~500 million pageviews a month and does so using 1 DB server and 1 Web Server which is a far cry from the industry standard of 300+ servers for a site of this size.   The system peaks out at 32,000 concurrent users and 440+ pageviews/second sustained.   Pretty much all my performance problems come down to the fact I do radius based searches on nearly every pageview and match people based on their preferences and the preferences of the users being searched on.  These screen shots show average usage of the site, about 50% from peak.  I am using dynamic GZIP compression,  every outgoing page is compressed on the FLY using the built in IIS 6.0 compression, its one of those features you turn on by messing around with the metabase.   This reduces my outbound traffic by about 60mb/sec.   I also have 1 mail server and 1 Image server.

Sessions
Pagessec

I find that asp.net gets looked down on sometimes,  But for me it more then holds its own and there are no real show stopper issues.  I am sure that Robert Scoble will love this post, as it gives real world performance stats, or maybe not now that he has left Microsoft.  For me I'm just happy that asp.net works and It doesn't give me problems so i can focus on important things like increasing traffic.

34 Responses to “Microsoft Asp.net 2.0 Performance.”

  1. Vincent Chan Says:

    Do you mind sharing some of you ways to increasing traffic?
    Many thanks

  2. Rick Says:

    Really nice posting, and outstanding performance from the hardware resources you’re deployong! You should post this at http://www.dzone.com – a digg-like site specifically for develoeprs. I’m sure the audience there would like this.

    Regards,
    Rick

  3. Phil Says:

    Gret article; are you using Kernel Mode Caching with IIS ?

    And for anyone interested in ASP.NET performance, here’s great MSDN article addressing performance –

    http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/default.aspx

  4. Ross Says:

    Where do you get your bandwidth? Did you have to scale that as well as you got bigger?

  5. Markus Says:

    Isn’t Kernel mode caching automatic in IIS 6? As for caching stuff, I use no cache what so ever, every pageview is a hit to the db.

    Bandwidth is just a network cable your ISP gives you, I just went and got a extra one to my cage as it went over 100 mb/sec

  6. Tom Says:

    Markus,

    Thank you for great posting. If you do not mind, would you share a little bit more about architecture of your site?

  7. Firoz Ansari » Blog Archive » ASP.NET 2.0, 1 Database Server, 1 IIS 6.0 Web Server and 32,000 Concurrent Connections! Says:

    [...] Markus Frind has posted his experience of using ASP.NET 2.0 for one of largest dating site PlentyOfFish.com in Canada. In his post, Markus is telling how he has addressed concurrency issues by switching to ASP.NET 2.0: At this point there were a lot of concurrency issues, the site would slooow down and just keep getting slower as more people came on. After switching to asp.net 2.0 all those problems went away. Now when there are over 32,000 concurrent connections at peak the site does not slow down. There are however still problems. I find that once you pass 100 Pageviews/second threads timers start to not get called for no reason. [...]

  8. greg Says:

    Note: I posted a duplicate of this on the wrong blog entry. Sorry about that.

    Markus, you can’t simply debunk Digg for having more servers than you.

    What matters is the total cost of the servers.

    From what i guess, to handle so much pageviews with so few servers, i guess you scale up instead of scale out i.e. each of your server has lotsa RAM, FAST CPUs etc.

    Digg, i think, chose the scale out approach i.e. many servers with average amount of RAM and average CPUs.

    So as you can see, Digg’s approach is definitely more economical and scalable.

    Your total server cost is about $5400 right?

    assuming Digg uses the AVERAGE server which costs about $200 each with 2000GB of bandwidth thrown in, your $5400 can afford Digg 27 servers.

    So i think that Digg’s server costs is lower than yours.

    To conclude, Digg’s approach is better.

  9. Algimantas Stancelis Says:

    Maintaining 1 server is easier than maintaining 27 servers.

  10. Neil Shearing’s Official Blog » Blog Archive » A $900,000+ Adsense check?! Says:

    [...] Take a look at the check by clicking here. Apparently the plentyoffish.com site serves 500 million page views per month, but only earns $1 effective earnings per 1,000 impressions through Adsense. With that very low eCPM, it’s a good job he’s getting huge volumes of traffic consistently… the site is just outside the top 500 most visited online according to Alexa… and has an incredible 2.6 million pages indexed in Google… and has 12,000+ links to it according to MSN. [...]

  11. mrrbob Says:

    Markus would you care to post the hardware specs for your servers? I really never thought asp.net could ever handle this load. I have much to learn I guess. I am going to take the plunge and get going with asp.net now after you have showed what it can really do. Very impressive indeed.

  12. Enormen Traffic in den Griff bekommen - Prinzipien zur Umsetzung eines Website-Caching-Systems » Webdesignblog Says:

    [...] Ein Liedchen von Performance und hohen Traffic-Lasten kann Markus Frind von Plentyoffish.com singen: Microsoft Asp.net 2.0 Performance Wenn dir der Artikel gefallen hat Bookmarke ihn bei del.icio.us Ähnliche Artikel: [...]

  13. Brian B Says:

    Last month I listened to an iPod interview with you and a couple clowns. They kept bashing ASP.NET and telling you that ASP.NET was junk and that you would have more scalability if you went with Linux. I kept thinking, “Who are these guys to give him advice about scalability? They probably never built anything with more traffic than a few hits per minute.”

    I was really hoping that you would set them straight during the interview, but you were much too diplomatic for that. I’m glad to see this post to show that ASP.NET can handle serious traffic.

  14. onlinecash Says:

    I’m suprised that ASP.net can be so useful as well. And I thought the world today is more crazy about the LAMP (Linux, Apache, MySQL, PHP) since eveything are open source and free.

    I bet the open source commnunity will have some say when they get to see this. I hope they could at least find some real life examples to counter ASP and IIS (which are products of M$). But, yeah, thanks for opening up my eyes on how ASP could things nicely.

  15. lasher Says:

    I find it very hard to believe 1 web and database server can handle
    32,000 concurrent connections, regardless what hardware platform and OS you’re running. I work for a software company that deals with loads like this and we have many web servers behind content switches and local directors to handle these types of loads. Please enlighten us with what hardware your running, OS, and DB configuration specifics that allow you this kind of performance.

  16. Markus Says:

    Lasher, that is my only real competitive advantage.

    No other dating site can do what I can do on the technical side without spending over 1 million a month.

  17. Web Design Pro Says:

    Hi Marcus.
    I remember in your interview with shoemoney that you said you had an AI for filtering Adult content photos.

    I’d really like to know where you found the code or the algo to do that.
    Is there a package you can by for that.
    Do you check skin tones?
    Does it work for all races?
    How many images can you check per second?

    Also do you code in C# or VB.net?

  18. karthick Says:

    Hi,
    are you pretty sure that with 1 webserver and 1 database server you can handle 32000 concurrent connections?

  19. TechCrunch » Blog Archive » Online Dating 2.0: Thirteen Sites To Find Love Says:

    [...] PlentyOfFish started as a way for Markus Frind to teach himself ASP, but quickly marched itself up to become a very large dating site, with nearly 600,000 unique monthly U.S. visitors (Comscore) and claims of 500 million monthly page views (Comscore says only 118 million, in the U.S.). Its look and feel is rough around the edges, but it gives users what they want: the ability to browse personal profiles free of charge. PlentyOfFish also crafted a simple bulletin board system that allows users to freely chat, vent frustrations, and offer up dating advice. The site is doing very well financially. [...]

  20. TechCrunch Japanese アーカイブ » オンラインデート 2.0: 「出会い」のための13のサイト Says:

    [...] PlentyOfFishは創設者のMarkus FrindがASPを勉強するために始めたプロジェクトだが、たちまち非常に大規模な出会い系サイトに成長した。米国のユニーク訪問者数は月間60万人に近づいており(Comscore調べ)、運営者側では月間5億ページビューがあると主張している(Comscoreでは米国で1億1800万ページのみと集計)。デザインや使い勝手にはぎごちなさも目につくが、ユーザーがもっとも必要としている機能―個人プロファイルを無料でブラウズできる―はきちんと備えている。 PlentyOfFishは簡単な掲示板システムを用意しており、ユーザーは自由におしゃべりしたり、グチをこぼしたり、デートにあたってのアドバイスをしたりできる。このサイトは経営上たいへんうまくいっている。 [...]

  21. york Says:

    Hi, Let me take a guess what about your techniqes Markus, you use some sort of sql optimization, and cache the hell out of it. This way, the content is served straight from memery instead of database querry every time the user ask for it.

    Let me know if this is the case

  22. Online Dating 2.0: Thirteen Sites To Find Love - • XXX Master • Says:

    [...] PlentyOfFish started as a way for Markus Frind to teach himself ASP, but quickly marched itself up to become a very large dating site, with nearly 600,000 unique monthly U.S. visitors (Comscore) and claims of 500 million monthly page views (Comscore says only 118 million, in the U.S.). Its look and feel is rough around the edges, but it gives users what they want: the ability to browse personal profiles free of charge. PlentyOfFish also crafted a simple bulletin board system that allows users to freely chat, vent frustrations, and offer up dating advice. The site is doing very well financially. [...]

  23. 900,000$ Adsense Check Says:

    [...] a lot, isn’t it? But the ratios are even worse. According to the owner himself, he has 500 million pageviews a month which is [...]

  24. Brian Says:

    Hey Marcus,

    I think I accidentally made a few duplicate entries so sorry for that but I”m actually brand new to ASP.net and trying to understand better how your sequences of prime numbers helped your efficiency in relation to processing data on your dating site?

    Could you explain that a little better to a novice?

    Congrats by the way!

  25. Mike Says:

    Hey Markus,

    Whats the best way to get in touch with you? I had more than one question for you and didn’t want to gum up your blog :)

  26. pradeep Says:

    im in confused state

  27. Dubai expat Says:

    Hi Marcus!
    What is your servers configuration? Handling so much traffic with so few servers seems unreal to me.

  28. Don Says:

    Bull-manure!

  29. Steve Says:

    nice post!!! another way to boost the performance of asp.net app is the use of a third party distributed caching solution. because of the in-process and stand alone nature of the asp.net cache, it is not good for large web farms apps. so a cache which is distributed over multiple servers not only helps to boosts the performance of the app but also good to over come the scalability issues. here is a good read about it.

    http://www.alachisoft.com/ncache/asp-net-performance-scalability.html

  30. big news articles Says:

    great topic and interesting

  31. motore asincrono Says:

    great, have a nice work

  32. yates en ibiza Says:

    I think I accidentally made a few duplicate entries so sorry for that but I”m actually brand new to ASP.net and trying to understand better how your sequences of prime numbers helped your efficiency in relation to processing data on your dating site?

    Could you explain that a little better to a novice?

  33. lone Says:

    I am sure this post has touched all the internet
    users, its really really pleasant piece of writing
    on building up new website.

  34. A $900,000+ Adsense check?! | by Neil ShearingNeil Shearing – Internet Marketing Strategies Says:

    [...] a look at the check by clicking here. Apparently the plentyoffish.com site serves 500 million page views per month, but only earns $1 effective earnings per 1,000 impressions through Adsense. With that very low [...]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

Join 260 other followers

%d bloggers like this: