Mangesh Supe, Hosting Performance Analyst

By

Founder, ThatMy.com • Independent Hosting Benchmarks • ISP & Network Infrastructure Background


Every hosting benchmark we publish is reproducible. We've published the test scripts we use on GitHub so you can verify our results, test your own hosts, or adapt the methodology for your needs.

📦 Repository: github.com/mangeshsupe/thatmy-test-scripts

MIT License. Free to use, modify, and adapt for your own testing.

What's Included

1. k6 Load Testing Script

File: k6/wordpress-load-test.js

What it does: Simulates concurrent users hitting a WordPress homepage. Measures response times, error rates, and custom metrics like TTFB percentiles.

Usage:

# Install k6 (once)
brew install k6

# Run the test
k6 run k6/wordpress-load-test.js \
  --vus 100 \
  --duration 60s \
  -e TARGET_URL=https://yourhost.com

Customizable parameters:

  • --vus — Number of concurrent users (default: 100)
  • --duration — Test duration (default: 60s)
  • TARGET_URL — Your WordPress site URL
  • RAMP_UP — How fast to ramp up users (default: 30s)

Output: Response time percentiles (p50, p95, p99), error rate, request/second throughput.

2. WebPageTest Batch Script

File: webpagetest/batch-test.js

What it does: Runs WebPageTest against multiple hosts simultaneously. Captures TTFB, FCP, LCP, Speed Index, and waterfall data.

Usage:

# Install dependencies
npm install

# Run batch test
node webpagetest/batch-test.js \
  --api-key YOUR_WEBPAGETEST_KEY \
  --hosts hosts.json \
  --location Dulles_VA \
  --runs 9

Customizable parameters:

  • --api-key — WebPageTest API key (free at webpagetest.org)
  • --hosts — JSON file with host URLs
  • --location — Test location (Dulles_VA, Frankfurt_Germany, etc.)
  • --runs — Number of test runs per host (default: 9)
  • --private — Run private tests (requires paid API key)

Output: CSV with TTFB, FCP, LCP, Speed Index, fully-loaded time for each host.

Note: WebPageTest free tier allows 200 tests/day. Paid tier unlimited. See webpagetest.org/getkey.php

3. PassMark CPU Lookup Script

File: cpu/passmark-lookup.js

What it does: Takes a CPU model name and returns PassMark rank, score, and release year.

Usage:

# Look up a single CPU
node cpu/passmark-lookup.js "AMD EPYC 9474F"

# Batch lookup from file
node cpu/passmark-lookup.js --file cpu-models.txt

Output:

AMD EPYC 9474F:
  Rank: #31
  Score: 91,423
  Release Year: 2023
  Cores: 48

4. Data Aggregation Script

File: data/aggregate-results.js

What it does: Combines results from k6, WebPageTest, and CPU data into a unified CSV/JSON output.

Usage:

node data/aggregate-results.js \
  --k6 ./results/k6-results.json \
  --webpagetest ./results/wpt-results.csv \
  --cpu ./results/cpu-data.json \
  --output ./results/final-benchmark.csv

Output: Single CSV file with all metrics per host, ready to import into spreadsheet or analysis tools.

How We Use These Scripts

Our monthly testing workflow:

  1. Setup: Create test WordPress install on each host (identical plugins, content, theme)
  2. WebPageTest: Run batch-test.js against all 15 hosts from Dulles VA (9 runs each)
  3. Load test: Run k6 load test (50, 100, 250 concurrent users) against each host
  4. CPU verification: SSH into each host, run lscpu, look up on PassMark
  5. Aggregation: Combine all results into unified CSV
  6. Analysis: Calculate percentiles, identify trends, update benchmark pages

Total time: 4-6 hours per monthly test cycle

Reproducing Our Benchmarks

To verify our TTFB data or run against your own hosts:

  1. Clone the repo: git clone https://github.com/mangeshsupe/thatmy-test-scripts.git
  2. Install dependencies: npm install && brew install k6
  3. Get WebPageTest key: Free account at webpagetest.org
  4. Create hosts.json: List of WordPress sites to test
  5. Run batch-test.js: Start WebPageTest tests
  6. Run k6 script: Start load tests once pages are up
  7. Compare results: See how your host stacks up

Full instructions in repository README.

Customizing for Your Use Case

Testing your own site:

  • Fork the repo
  • Update hosts.json with your site URL
  • Run load tests to benchmark against public data
  • Use k6 to test your own performance optimization efforts

Testing different WordPress versions:

  • Modify the test WordPress install to use WordPress 6.4, 6.6, etc.
  • Run full test cycle to see version impact on performance

Testing non-WordPress platforms:

  • Adapt k6 script to target different URLs/endpoints
  • Use WebPageTest batch runner on any web application

Requirements

Software:

  • Node.js 18+ (for batch and aggregation scripts)
  • k6 (for load testing)
  • WebPageTest API key (free account at webpagetest.org)

Hardware:

  • Laptop or desktop with 8GB+ RAM
  • Stable internet connection (load tests generate 50Mbps+ traffic)

Cost:

  • Free (WebPageTest free tier: 200 tests/day)
  • Optional: Paid WebPageTest plan for unlimited tests ($99+/month)

License & Attribution

These scripts are published under the MIT License. You're free to:

  • Use: Run them against your own hosts
  • Modify: Adapt for different testing scenarios
  • Distribute: Share modified versions
  • Commercialize: Use for commercial testing services

Attribution appreciated but not required: If you use these scripts for published benchmarks, a link back to thatmy.com/how-we-test is appreciated.

Support & Issues

Questions or issues with the scripts?

Related Resources