If you start moxi with the -Z time_stats=1 flag:
./moxi -Z time_stats=1,port_listen=11511 http://HOST:8080/pools/default/bucketsStreaming/defaultThen you can get histogram output from moxi:
telnet 127.0.0.1 11511 stats proxy timings
When time_stats=1, moxi will call gettimeofday() system call before and after each request. And, per-bucket, it introduces into moxi a relatively small constant amount of memory to track the histogram bins. By default time_stats is 0 (or disabled).
For example:
$ echo "stats proxy timings" | nc 127.0.0.1 11511 STAT 11511:default:connect 0+100=1 25.00% ******** STAT 11511:default:connect 100+100=3 100.00% ************************ STAT 11511:default:connect 200+100=0 100.00% STAT 11511:default:reserved 0+100 =97624 86.18% ************************ STAT 11511:default:reserved 100+100 =15414 99.79% *** STAT 11511:default:reserved 200+100 =134 99.90% STAT 11511:default:reserved 300+100 =29 99.93% STAT 11511:default:reserved 400+100 =21 99.95% STAT 11511:default:reserved 500+100 =10 99.96% STAT 11511:default:reserved 600+100 =14 99.97% STAT 11511:default:reserved 700+100 =10 99.98% STAT 11511:default:reserved 800+100 =9 99.99% STAT 11511:default:reserved 900+100 =3 99.99% STAT 11511:default:reserved 1000+100 =2 99.99% STAT 11511:default:reserved 1100+100 =3 99.99% STAT 11511:default:reserved 1200+100 =1 99.99% STAT 11511:default:reserved 1300+100 =1 99.99% STAT 11511:default:reserved 1400+100 =0 99.99% STAT 11511:default:reserved 1500+100 =0 99.99% STAT 11511:default:reserved 1600+100 =0 99.99% STAT 11511:default:reserved 1700+100 =0 99.99% STAT 11511:default:reserved 1800+100 =0 99.99% STAT 11511:default:reserved 1900+100 =0 99.99% STAT 11511:default:reserved 2000+100 =0 99.99% STAT 11511:default:reserved 2100+200 =0 99.99% STAT 11511:default:reserved 2300+400 =0 99.99% STAT 11511:default:reserved 2700+800 =0 99.99% STAT 11511:default:reserved 3500+1600=4 100.00% STAT 11511:default:reserved 5100+3200=2 100.00% STAT 11511:default:reserved 8300+6400=0 100.00% END
There are two parts to the histogram:
connect -- time spent in a connect
reserved -- time spent with a downstream fully reserved (or assigned) to an upstream connection. To read it, a line looks like:
STAT ...:reserved bucket_start_usec+bucket_width_usec =count cummulative_percentile asterisk_graph For example:
STAT 11511:default:reserved 0+100 =97624 86.18% ************************ STAT 11511:default:reserved 100+100 =15414 99.79% *** STAT 11511:default:reserved 200+100 =134 99.90%
And that means that:
97,624 requests fell into the 0-to-100 usec bucket, which was 86.18% of all requests.
15,414 requests fell into the 100-to-200 usec bucket, and 99.79% of requests were faster than 200 usecs.
134 requests fell into the 200-to-300 usec bucket, and 99.90% of requests were faster than 300 usecs.
Note that the histogram bucket (or bin) widths start out constant; but, the bucket widths start doubling towards the end with the longer timings.