Building a any application, but especially high traffic websites on Sitecore one of the final steps before launch is to tune ensure any caching mechanisms have been properly tuned to support the needs of the organization.
One of the difficulties my teams always have is finding a server or two or three with enough available horse power to pound on out site. Running from a simple local machine is good enough for about 2 minutes until it begins heating the entire office.
But this headache and a more reasonably temperature office exists. How did we achieve this utopian level? Through the cloud of course…Visual Studio Team Services to be specific, by the way it’s free to register and take advantage of even.
Visual Studio Team Services provides a number of different tools and services, many for free such as GIT repos, CI, team and task management. One of the services provided is the ability to run scaled load testing from the cloud. Depending on your needs, you have the opportunity to run four types of tests from VSTS, Visual Studio Test, HTTP Archive Based Test, URL Based Test, Apache jMeter Test.
Two things I found great about the service is, A) I get a decent number of free testing units (called Virtual User Minutes) to perform my testing, and B) I don’t have to purchase a high level MSDN or Visual Studio license. Why? Because it supports my tool of choice Apache’s jMeter.
As easy as 1, 2, 3
I can build and even pre-test my jMeter test scenarios on my local or internal hardware to confirm it generates the proper simulated traffic. After this is as easy as 1,2,3,4..and maybe a 5th step.
- Login to Visual Studio Online
- Click over to the Load Test screen
- Create a new test of type jmeter from the selector
- Upload the jmx file representing you developed jMeter scenario
- Upload your jmx file that defines your test run. Note, that the name of the file is the name the test will be referenced in the other screens.
- Set yout number of agents, length of run, and region the test should run from.
- Click Run
- Smile and sip your coffee as the data pours into convenient charts and table.
Not Accessible to the World, yet?
If your site is sitting behind a firewall and only has internal DNS, with some additional setup you can still leverage the power of the cloud to perform your test, Testing private/intranet applications using Cloud-based load testing.
For testing Sitecore load check-out this pre-started jMeter test provided by Sitecore themselves https://kb.sitecore.net/articles/398589. One thing to note if you would also like to test out or populate out xAnalytics data you will want to disable robots detection via the following patch config. Robots detection needs disabled as the tester does not trigger page events as required by xAnalytics for identifying a ‘human’ user. (Just be sure to turn it back on before site launch.)
<! -- ANALYTICS ROBOTS IGNORE ROBOTS Ignore requests and do not write information to the Analytics database when the visitor classification identifies the visitor as a robot. Default: true -- > <setting name="Analytics.Robots.IgnoreRobots"> <patch:attribute name="value">false</patch:attribute> </setting>
If data still isn’t properly collecting you may also need to tweak the robot’s timeout value to allow the session to run longer.
<! -- ANALYTICS ROBOTS SESSION TIMEOUT The ASP.NET Session Timeout for auto detected robots. When the automatic robot detection identifies a session as being a robot, the ASP.NET Session Timeout is set to this value (in minutes). Default: 1 -- > <setting name="Analytics.Robots.SessionTimeout"> <patch:attribute name="value">5</patch:attribute> </setting>
Its that simple, and now there is no longer any reason to avoid even basic site load tests for Sitecore or any other application.
During my exploration of leveraging this cloud based load testing I found the following links to be informative: