This new browser market share report is interesting. It is surprising to see Chrome at 5% already.
Browser Market Share Report
February 5th, 2010Load Testing Ajax Slides Are Posted
October 20th, 2009The slides from our presentation at The Ajax Experience are now posted on SlideShare. Enjoy!
Ajax Load Testing Gotchas – Part 1 (REST Verbs)
September 20th, 2009One current trend in web development is toward the proper use of REST (Representational State Transfer). Rest maps 4 of the HTTP verbs, GET, POST, PUT and DELETE to Create, Read, Update, and Delete actions within a web application.
Browsers do not have direct support for PUT and DELETE currently, although this is coming when HTML 5 eventually comes out. However, PUT and DELETE are already supported in the XMLHttpRequest implementation in all major browsers, so it is possible create proper REST implementations of Ajax forms. The gotcha in this case is that many load testing tools will have trouble recording PUT or DELETE requests, or problems running them at test-time. For the time being, if you are using Ajax forms, double-check to make sure your requests are properly recorded and replayed.
Testomatix will be presenting at “The AJAX Experience” conference in Boston
September 1st, 2009Eric Beland will be speaking on AJAX Load Testing Considerations at The AJAX Experience September 15th at 1:20. We hope to see you there!
Scaling Up vs Scaling Out at Stack Overflow
August 1st, 2009
StackOverflow, a popular programming website, has posted their architecture and scaling approach for their website. Their blog post has some excellent scaling tips, especially if you’re running a Windows/.Net stack.
The blog post also raises an interesting point regarding scaling up vs. out. Scaling up, a.k.a. vertical scalability, involves adding more memory and CPUs to a machine to gain performance improvements. Scaling out, or horizontal scalability, involves adding more machines to a system or part of the system in order to gain performance.
In recent years, scaling up has gotten bad press, as it has finite limitations that prevent it from being used effectively by the biggest sites on the web, like Google and Facebook. There is a limit to the ram and CPUs you can add to a machine. In the case of Stack Overflow, however, they have been mainly using a scale up strategy. The reality is most sites don’t have a need to scale to Google or Facebook-size proportions–so the choice is not a binary scale up vs out decision. Additionally, some tiers in a web architecture are easier to scale horizontally. For example, adding web servers is often a fairly straightforward proposition. However, adding database server machines is usually more challenging, as in some cases you will be looking at sharding, breaking off some piece of functionality like reporting, or moving to a master-slave setup.
If you run an open source stack, scaling out is more practical, in general. Stack Overflow was built on a Windows/.Net foundation where licensing costs provide a natural incentive to look at scaling up first, rather than scaling out. One take-away, to my mind, is that scaling up is a cost effective solution at certain stages in the growth of a web application. Scaling a website is normally a gradual process of continually removing the next most-pressing bottleneck. If you look at the growth patterns of larger websites, most started by plucking low-hanging fruit–often this involves scaling up a bit–like adding more ram, or CPUs to your database machine. Eventually, if your site attains a VERY large size, the optimizations you make are likely to make your application more complicated, and less flexible, so you pay a maintenance and design penalty for those optimizations. For example, database sharding, a scaling out strategy, tends to be done in the very late stages of growth, and the reason is that it limits how effectively some queries can run, and even whether some queries are possible. Scaling up, however, does not pose these problems.
Scaling up is a strategy worth keeping in your toolbox. Even if your plan is mainly scaling out, adding more ram and CPU to the boxes you are scaling can make sense. There is no shame in scaling “diagonally” when the situation warrants it. When choosing an architecture, know that architectures that only scale up will eventually hit a wall if enough growth occurs. That doesn’t mean your site will see enough traffic to hit that wall, and it doesn’t mean that scaling out can’t be done later. Realistic capacity planning is important at this stage. There is no need design every app to reach Google-scale. Sometimes vertical scaling is plenty, and when it is, it can be very cost effective.
As an aside, and on the flipside, with the advent of cloud computing and virtualization, there is a certain extra appeal to tearing the cost of scaling free from the moorings of software license costs. An OSS approach, which avoids licensing fees, can make it very cost-effective to run a full-size test environment in the cloud, on-demand, for testing purposes. This can provide tremendous advantages when testing performance and experimenting with different configurations.
FireFox 3.5 Bug on Windows and “works on my machine”
July 13th, 2009
Last week, a bug was discovered in FireFox 3.5 on Windows machines. To help generate a random number, FireFox reads the garbage data from the temp files and cache folders to “seed” the random number generator. Internally, random numbers are used within FireFox for security-related encryption functions. Unfortunately, on Windows machines with large Internet Explorer Caches, or Temp folders, reading the data used to seed the random number generator can take up to 40 seconds, and FireFox is barely usable.
This problem was presumably unanticipated because the development machines did not have large Internet Explorer cache folders, because FireFox developers mostly use…FireFox! It is an unfortunate reality of software development that code which worked well in a development environment may fail in the real world, especially if it hasn’t been tested and vetted against real-world data and usage patterns. The only way to escape the “works on my machine” problem is thorough testing with real-world data.
The same principle applies to testing the performance characteristics of web applications. The test data and scenario must be as realistic as possible to avoid this type of problem. For example, many SQL queries are blindingly fast with 2,000 records in a database, but when there are 2 million records, those same queries may return their results shortly after pigs fly. SQL queries (typically joins) that scale exponentially are a common scenario that can run into this type of problem. Although it can be difficult to get right, the more realistic your testing, the less margin of error for surprises after release, so test environments must be built with a careful eye on realism.
Testomatix is on Twitter
July 2nd, 2009Testomatix is now on Twitter. We’ll be posting our blog updates, as well as joining in discussions about load testing.
Twitter is an interesting place. Aside from being a walking case study on the need for load testing, it allows you to “have a conversation with the world” in a way that hasn’t existed in quite this way previously. We’re looking forward to participating in the world’s conversation about load and performance testing. See you there!
The kinds of spikes we haven’t seen before
June 26th, 2009
So, the unexpected passing of Michael Jackson has been causing quite a stir. An unintended consequence of this unfortunate story is that the people hit the Internet to confirm the rumors. They hit it hard, causing downtime at numerous web sites. (Arguably, an even less expected side effect of his passing is that when MJ brought down twitter, Iranians were unable to tweet about their ongoing revolt. Oh, Internet, how fragile you are…)
Is MJ’s departure a unique, record setting event? I doubt it. It’s part of a trend, and I think it’s going to become the norm. We all know that Internet usage hasn’t plateaued yet. In fact, once it does, that will be pretty big news. In the meantime, it continues to grow thanks to increasing connectivity, abundance of netbooks and mobile devices, innovation on the web itself and, of course, a growing awareness of the web’s ever-increasing utility.
Think of the DESIGN GOAL for IPv6: let’s make everything uniquely addressable. EVERYTHING. What were those mad men thinking? What could we possibly want to address? They were preparing for a technology-drenched future. Let’s pave the way for innovation, let’s address devices that don’t even exist yet. That will lead to an incredible increase in connectivity and overall network utility! More, cheaper devices, with new, unforeseen functionality! Everyone benefits.
But that’s just concept. In the meantime, mashup-based cross-pollination of web content is rapidly growing, and the trend is all up from here. That’s not just “people on the web” anymore, that’s people USING the web. This affects everyone. Can the pipes handle it? What’s the horse power behind your web app? If you don’t know, find out, because today’s traffic nightmare is going to be tomorrow’s drop in the bucket.
Average Web Page Size has Tripled Since 2003
June 23rd, 2009
Within the previous five years, the size of the average web page has more than tripled, and the number of external objects has nearly doubled. The average page size is currently a little over 300k, according to WebsiteOptimization.com.
There are a number of optimizations that help with larger page sizes.
To take one, example, server-side compression mechanisms provide a good option to negate some of the problems that accompany larger page size, like higher bandwidth costs, and slower page load times.
If your web server is running Apache, mod_deflate can help. If you’re using IIS, there is a good article about compression settings in IIS here.
As with most optimizations, there is a trade-off. In the case of compression, the trade-off comes in higher CPU utilization. A nice overview of compression can be found here. Even though compression raises CPU usage, optimization is a game of trading what you have to spare to get more of what you need, so if you can spare some CPU cycles, compression is a very smart trade.
Half a Second Additional Load Time Costs 20% in Lost Traffic and Revenue
June 23rd, 2009
I recently stumbled across a blog post with this tidbit from a previous Web 2.0 conference. Google ran a user test to experiment with returning more than the usual ten results at a time in their search engine.
Google found that the half second needed to return the additional results killed user satisfaction, and caused a 20% drop in traffic. In spite of working in the load testing industry where page load time is king, seeing the real consequences of slow page load times drives home the point of “why page load times are important” in a very tangible way.
See Greg Linden’s blog post on this topic.

