Tricks for using JMeter with Drupal
Latest commit 0da41c3 Dec 2, 2014 @erikwebb Recycle URL list on EOF
Failed to load latest commit information.
.gitignore Add thread group for 404 requests Nov 30, 2014
Rakefile Credit source of CSV->JSON code Nov 30, 2014 Reduce "Non HTTP response code" errors Dec 2, 2014
urls-404.csv Add thread group for 404 requests Nov 30, 2014
users.csv Add initial documents and first tests Aug 18, 2012

Drupal JMeter Tricks

Author: Erik Webb


  • JMeter 2.12+ [Download]
    • Ensure the jmeter script is in your PATH and executable
  • JMeter Plugins [Download]
  • A Drupal 7 site

Test Site Setup

To setup a simple site for testing these JMeter scripts, use the following Drush commands -

drush site-install --account-name="admin" --account-pass="admin" \
    --site-name="Drupal JMeter Test" standard
drush user-create user --password="user"


> rake -T
rake analyze  # Perform log analysis on JMeter results
rake clean    # Remove current log and results files
rake edit     # Open JMeter script for editing
rake json     # Save the results.jtl file as JSON
rake run      # Run JMeter script and save results


  • test.jmx: Sample JMeter test script with multiple thread groups to illustrate different techniques. The following scenarios are used as examples -
    1. Drupal Login: Login as a Drupal user, driven by a CSV file.
    2. Select From A List: View a content listing and select a single item at random to view.
    3. Traverse Menu Tree: Visit every page located in the main menu.
    4. Create a Node: Save a new piece of content using hard-coded values.
    5. Visit List of URLs: Visit every URL listed in a CSV file.
    6. Visit List of 404 URLs: Visit every 404 URL listed in a CSV file.
    7. Clear Cache: Login as an admin and clear the Drupal caches.
  • Properties needed for a usable results file.
  • Rakefile: Rake file to shortcut common tasks.
  • users.csv: Sample user dictionary file
  • urls.csv: Sample list of URLs to test against

NOTE: In order to optimize resource utilization, only a Simple Data Writer listener is used. The fields stored in results.jtl file are configured using


There are a few configuration settings that require specific note here -

  1. XPath query used to detect a Drupal error message -

    //div[contains(concat(' ',normalize-space(@class),' '),' messages ') and contains(concat(' ',normalize-space(@class),' '),' error ')]
  2. Choosing a random item from a JMeter list returned by the XPath Post Processor -

  3. Check if a variable was successfully set -

    "${node_links}".length > 0


If you have run into issues, please post an issue on Github and attach your jmeter.log file.