Myspace Statistics

I am watching a programming presentation from the Myspace tech team right now. They are going over their stats and was blown away by the numbers (as of April 2007):

Myspace

  • 185 Million Registered Users
  • 50.2% Female / 49.8% Male
  • Primary Age Demo: 14 – 34
  • Over the last 5 months, had between 39 and 45 Billion page views per month.
  • The second biggest site was Yahoo around 35 Billion. MSN, Google, Ebay and Facebook are all way behind with under 15 Billion.
  • 350,000 new registrations each day
  • 1 Billion total images on the site, 80 Terabytes of space, 150,000 requests per second
  • Millions of new images/day
  • 25 Million Songs, 142 Terabytes of space, 250,000 concurrent streams
  • With Videos, 60 Terabytes of storage, 15,000 concurrent streams, 60,000 new videos / day
  • 4.5 Million people on site on any one time
  • 7 Datacenters
  • 6000 web servers
  • 650 ad servers
  • 250 database servers
  • 70,000 megabits per second bandwith (I run over 20 sites, some considered “large” and I don’t go above 2 mb/s
  • 80% ASP.NET, 20% Coldfusion

Add Additional Information to Your Exceptions

When Enterprise Library was called Microsoft Application Blocks, if you wanted to log an Exception, you would write (assuming “ex” is an Exception):

ExceptionManager.Publish(ex)

And if you wanted to log some extended properties you could do something like this:

NameValueCollection customerInfo = new NameValueCollection();
customerInfo.Add("name","scott");
customerInfo.Add("email","blah@blah.com");
ExceptionManager.Publish(ex,customerInfo); 

Now that I am upgrading all legacy code to Enterprise Library 2006 for .NET 2.0, I couldn’t find a way to do this since the only way to log an error is:

ExceptionPolicy.HandleException(ex, "General Policy");

where “General Policy” is the name of the Exception Policy in the config file telling the Block what to do with the exception.

Looking in the config file, I noticed a formatter template with the following at the tail end of the template attribute, “…Extended Properties: {dictionary({key} – {value} )}”.  The formatter template is used to format the exception that is about to be logged somewhere.  Looking through the code for where it loops through this Dictionary, I noticed it accessing an IDictionary of Exception.Data.  Exception.Data?  Where did that come from?

Data is a new .NET framework 2.0 property of the Exception class to allow you to add any user-defined information about the exception.  Nothing more to it:  Just a simple name/value dictionary for your enjoyment.  As if you couldn’t figure it out, my new code would look like:

ex.Data.Add("name","scott");
ex.Data.Add("email","blah@blah.com");
ExceptionPolicy.HandleException(ex, "General Policy");

And as long as you use the default formatter, it will log this data at the end of the FormattedException field.