Wow! How are you measuring load times? As far as I knew nginx would only report request response times ($request_time) which is something completely different.
I've not had a good look for a few months, but last time I checked there was very little available for analysing response times. PastMon looks promising. And there are commercial tools like Client Vantage (rather expensive).
I ended up writing my own - its not that hard really to create a simple awk script to report all hits which are over a threshold - but remember that you'll need to go back and check to see how the URL behaves the rest of the time. e.g.
# looking for URLs matching 'example.com/interesting'
# with URL in $6 and $request_time in $8
BEGIN {}
$6==/example.com\/interesting/ {
if ( $8>0.3) {
n[$6]+=1; # no of hits by URL
t[$6]+=$8; # sum of times by url
s[$6]+=$8 * $8; # sum of sq of times by url
if (m[$6]<$8) m[$6]=$8; # max time for url
}
}
END {
print "url, n, avg, stddev, max";
for (x in n) {
print x ", " n[x] ", " t[x]/n[x] ", " sqrt(s[x]-t[x]*t[x])/(n[x]-1) ", " m[x];
}
}
If you are measuring the response times on the proxy, then you're also measuring the time taken to deliver the request across the network - i.e. your application may be behaving consistently but the spikes are introduced by changes on the internet / client. If you want to see what your application is really doing then you need to look at your webserver logs.
I would expect the munin plugin require's nginx's status module. This is not compiled in by default, nor is it automatically made available even when it is compiled in.
Compile nginx with the --with-http_stub_status_module flag.
Make sure you've enabled stub status inside a server {}
block like this:
location /nginx_status {
stub_status on;
access_log off;
}
Restart nginx so that your changes take effect.
curl
http://yourdomain.example.com/nginx_status to verify nginx is in fact returning data.
Make sure munin knows the full path to your nginx_status URL.
Best Answer
Just found this munin plugin: https://github.com/arthur-debert/munin-httpresponse-plugin/blob/master/httpresponsetime