Load Testing made easy with JMeter

In my previous post, I looked at the importance of load testing. In this next post in this series on load testing, I will show you how to use JMeter to create a simple load test, take a look at the various JMeter’s components and some features you should familiarize yourself with to help make load testing easy.

  • JMeter is a Java application as a pre-requisite you will need to install the latest 64bit JDK or JRE.
  • Download the latest binaries and unzip to a directory, for example, c:\jmeter.
  • To run navigate to the \bin directory and run Jmeter.bat or if you are on a mac jmeter.sh.

JMeter UI overview

The UI is divided into three main functional areas:

  1. Menu bar – provides access to a lot of the main functions and provides relevant information to current running tests.
  2. Left panel – contains a hierarchical tree view of one or more test plans and the various components contained in the plans.
  3. Right Panel – this is where you will spend most of your time configuring various components or viewing any associated output from components contained in plans.

jmeter5ui

Continue reading

How to Prevent DEF from creating Duplicate items in Sitecore

I ran into an issue with Sitecore’s Data Exchange Framework v1.4.1 where my pipeline batches would intermittently create thousands of duplicate Sitecore items. This caused a bit of management overhead having to clean out the duplicates.  Following some investigation, I decided to add some defensive coding by introducing a Custom Resolve Sitecore Item Processor to replace Sitecore’s OOTB pipeline step and prevent duplicates from being created.

removeduplicates.jpg Continue reading

Measuring performance under load.

Load testing allows you to gather metrics on the performance and behavior of your application under normal or anticipated peak load conditions. This not only helps you make educated decisions about your application and environment but provides a level of confidence your users should not experience a degradation in performance or worse an outage. By being proactive and making course corrections when issues are encountered during tests.

It involves putting sufficient load on an application while it remains up and running so you are able to gather metrics about the applications performance and the environment. These metrics should include things like throughput-rates, response times, memory consumption and CPU utilization.

Continue reading

Handy Dandy Tool for parsing Solr logs

Have you ever had to look at the Solr logs for potential issues? It’s not a fun task and the Solr logging UI doesn’t exactly make it easy. In fact, it’s easier to crack open the logs using your favorite text editor. But even that can be challenging.

I’m sure there are plenty of tools out there to help make this task easier like Splunk but what if you don’t have Splunk? I found this handy dandy tool to be pretty quick and useful for parsing Solr logs when troubleshooting issues.

Continue reading

Troubleshooting Sitecore Solr Index

I’ve worked on various Sitecore implementations where the customer has often run into issues with data not being returned as expected the first thing I do now to troubleshoot is to check the Solr Index.

Check Solr Is Up

  1. If you are not sure of the address of your Solr instance you can locate the url in the following configuration file app_config/includes/Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config and the setting, for example: <setting name=”ContentSearch.Solr.ServiceBaseAddress” value=”https://localhost:8983/solr“></setting>
  2. Use Solr Ping to check the status of the master solr index http://localhost:8983/solr/sitecore_master_index/admin/ping?wt=json
  3. You should receive the following output with the status of OK:
    SolrPing

Continue reading

Handling failed messages with Deadletter Queue and Sitecore Workflow

In my last post, I implemented a message queue which decoupled our application and provided a level of redundancy for our messages. But what about messages that are not processed successfully? This could occur for a number of reasons there might be an issue with the consuming application, a network issue or even an invalid message request.

A Deadletter queue, also known as an undelivered-message queue is a holding queue for messages that cannot be delivered to their destination. They provide a mechanism for persisting your failed messages without continually trying to process the same message. The deadletter queue could then be monitored and any failed messages can be examined and appropriate corrective action taken.

deadletterqueuesitecore

Continue reading