Skip to content

Instantly share code, notes, and snippets.

@bdkosher
Last active August 29, 2015 14:17
Show Gist options
  • Select an option

  • Save bdkosher/040811c2d86b4672664e to your computer and use it in GitHub Desktop.

Select an option

Save bdkosher/040811c2d86b4672664e to your computer and use it in GitHub Desktop.
Gathering statistics on download speeds using curl httpd wtih mod_ratelimit
%{url_effective},%{size_download},%{time_total},%{speed_download}\n
#!/bin/sh
NBR_OF_DOWNLOADS=100
RATES=(0 700 600 500 450 400 350 300 250 200 150 100 50 45 40 35 30 25 20 15 10)
FILES=(A.zip B.zip C.zip)
for f in "${FILES[@]}"
do
for i in $(seq 1 $NBR_OF_DOWNLOADS)
do
for rate in "${RATES[@]}"
do
curl -s -o /dev/null -w @curl_write-out_fmt http://localhost/files/$rate/$f >> dllog_$rate.csv
done
done
done
LoadModule ratelimit_module modules/mod_ratelimit.so
# Could use a single dynamic location if runnign 2.4.8+ http://httpd.apache.org/docs/2.4/mod/core.html#locationmatch
<Location /files/10>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 10
</Location>
<Location /files/15>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 15
</Location>
<Location /files/20>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 20
</Location>
<Location /files/25>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 25
</Location>
<Location /files/30>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 30
</Location>
<Location /files/35>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 35
</Location>
<Location /files/40>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 40
</Location>
<Location /files/50>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 50
</Location>
<Location /files/100>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
<Location /files/150>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 150
</Location>
<Location /files/200>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</Location>
<Location /files/250>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 250
</Location>
<Location /files/300>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 300
</Location>
<Location /files/350>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 350
</Location>
<Location /files/400>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 400
</Location>
<Location /files/450>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 450
</Location>
<Location /files/500>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 500
</Location>
<Location /files/600>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 600
</Location>
<Location /files/700>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 700
</Location>
AliasMatch ^/files/(\d+)/(.*) /var/www/files/$2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment