illustris 4fb1bd90db
init
2026-01-08 18:11:30 +05:30

59 lines
1.5 KiB
Bash

#!/bin/bash
#
# Load generator for Pyroscope demo
# Run this to generate traffic that will show up in Pyroscope
#
BASE_URL="${1:-http://localhost:5000}"
DURATION="${2:-60}" # seconds
echo "Generating load to $BASE_URL for $DURATION seconds"
echo "Press Ctrl+C to stop"
echo ""
end_time=$(($(date +%s) + DURATION))
request_count=0
while [ $(date +%s) -lt $end_time ]; do
# Mix of different endpoints
case $((RANDOM % 10)) in
0|1|2|3)
# 40% - CPU intensive (primes)
n=$((1000 + RANDOM % 4000))
curl -s "$BASE_URL/api/primes/$n" > /dev/null
;;
4|5)
# 20% - Hash (uncached)
data="data_$(($RANDOM % 100))"
curl -s "$BASE_URL/api/hash/$data" > /dev/null
;;
6|7)
# 20% - Hash (cached)
data="data_$(($RANDOM % 10))" # Smaller set for better cache hits
curl -s "$BASE_URL/api/hash_cached/$data" > /dev/null
;;
8)
# 10% - Slow I/O
curl -s "$BASE_URL/api/slow_io" > /dev/null
;;
9)
# 10% - Mixed
curl -s "$BASE_URL/api/mixed/500" > /dev/null
;;
esac
request_count=$((request_count + 1))
# Print progress every 10 requests
if [ $((request_count % 10)) -eq 0 ]; then
echo -ne "\rRequests: $request_count"
fi
# Small delay to avoid overwhelming
sleep 0.1
done
echo ""
echo "Done! Total requests: $request_count"
echo "Check Pyroscope at http://localhost:4040"