node-hdr-histogram
A port of HDR Histogram at http://hdrhistogram.github.io/HdrHistogram for use with node. All calls into the Java layer are asynchronous by default to improve performance.
Build
Run npm install
Solving known OSX java/jni build issues wrt the java node module
Ensure that JAVA_HOME is set to a JDK (not JRE)
e.g. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
and that the JDK is set up to support JNI (off by default on OSX),
i.e open $JAVA_HOME/../Info.plist
and add JNI
to the JVMCapabilities
array.
see here for details
Test
- Run
npm test
To install from npm registry
Run npm install hdr-histogram
Example nodejs code
//instantiate the hdr-histogram module with
//- max value you expect to record
//- min value you expect to record (must be greater than 1 so scale your recorded values appropriately)
//- significant digits to record (precision)
//- the log file to write to
var hdr = require('hdr-histogram')(2000000, 1, 5, 'example.histogram.hlog');
//Record a latency value
hdr.recordValue(200); //this
//reset the recording process
hdr.reset();
All the above calls also return promises so that rather than fire-and-forget the caller can use the return value to determine when the call was completed
To view the recorded results
use the Visualizer to load the produced file. THis allows you to view the max-per-interval plot and the percentile plot without futher processing the log file.
To generate and view percentile data
Run the following script to process the histogram logs above and produce a percentile series log file
`./HistogramLogProcessor -i <log file outputted above> -o processedLogs`
A 'processedLogs.hgrm' file is generated. This can be ploted in excell or opened with the online Dynamic Histogram Plotter tool which dynamically show your percentiles
enjoy.