Giter VIP home page Giter VIP logo

giltene / jhiccup Goto Github PK

View Code? Open in Web Editor NEW
675.0 675.0 92.0 882 KB

jHiccup is a non-intrusive instrumentation tool that logs and records platform "hiccups" - including the JVM stalls that often happen when Java applications are executed and/or any OS or hardware platform noise that may cause the running application to not be continuously runnable.

License: Other

Shell 25.62% Java 74.26% Dockerfile 0.12%

jhiccup's People

Contributors

benhyland avatar bonifaido avatar bryant1410 avatar cesarsotovalero avatar giltene avatar gitter-badger avatar hrj avatar karl82 avatar mich8bsp avatar mikeb01 avatar paplorinc avatar pbzdyl avatar rosshendrickson-wf avatar ryenus avatar scotte avatar snyk-bot avatar sralmai avatar sullis avatar worldofpeace avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jhiccup's Issues

Logging timestamps

After chatting with an Azul engineer, it was suggested I create this issue to ask for a clarification in the documentation (if no code change is needed) to describe which clocks are being used when printing otu the log line and which clocks are being used to measure pauses (System.currentTimeMillis() and System.naonTime() respectively).

We have an issue (still unsolved at this point) where there was a 35s delta between two log lines (lines before and after are 1s apart). The maximum seen pause during this iteration was only 0.688 which wouldn't seem to be possible if the log line's clock showed a diff of 35s.

How to use jHiccup with Solr?

I've tried use Solr with Jhiccup to analyze garbage collectors of Azul zing JVM and G1GC of Java-Hotspot. I launched solr, and want include jHiccup on it. of solr process is 1078. I used following command: ./jHiccup -l /tmp/jHiccup-2.0.9/hiccup.%date.%pid -p 1078. It should be work, but an error is displayed : A JNI error has occured, please check your installation and try again. Help me please!

Help requested on how to achieve log file rotation with jHiccup logs?

Hi Gil,
Could you please guide me on the following

  • How can I achieve log file rotation after the log has reached a specific size limit. I understand we can add %pid_%host_%date to the log file name. But that I assume will not get rolled over, until the application restarts?
  • The intention is to run jHiccup on a application under load (high volume) running on a pod, that might have disk capacity restrictions. Could you please help me on what extra disk capacity is required assuming jHiccup runs inside such a high volume application.
  • Also , if you have a rough guideline on the size of the generated log, based on duration of run, it would be great.
    Thanks in Advance,
    Divya

Add option to create log in CSV

This would lower the barrier of entry in parsing the data with scripts (i.e. plotting the series in R would be trivial). I'll look at implementing this myself if I can get some time - if so, you can expect a pull request coming your way.

Visualization/log processing tools outdated

Not any of the mentioned log processing tools were able to process my logs

jHiccupLogProcessor, failed to parse logs produced with jhiccup 2.0.10:

./jHiccupLogProcessor -i ~/jhiccup.log -o jhiccup_processed.log
Log file parsing error at line number 0: line appears to be malformed.

Using this file (only gzipped to make attachment smaller):

jhiccup.log.gz

I also tried some other tools linked in the README, none of them worked either:

https://github.com/ennerf/HdrHistogramVisualizer

https://hdrhistogram.github.io/HdrHistogramJSDemo/logparser.html

http://hdrhistogram.github.io/HdrHistogram/plotFiles.html

Please provide an up-to-date list of tools that support the log format of 2.0.10 or instructions on how to convert logs to other formats.

quick question about Interval_Max

What is the unit or measure for Interval_Max in hiccup.*.hlog file ?
"StartTimestamp","Interval_Length","Interval_Max","Interval_Compressed_Histogram"

Sure looks like milliseconds, but can't find it documented anywhere.

Thanks,
--Erik

The control process running in a separate JVM is not generated with JDK 9.0.4 and JDK 10

Hi,

We used the following parameters on Linux Centos 3.10.0-514.6.1.el7.x86_64:

-javaagent:/opt/jHiccup-2.0.8/jHiccup.jar=-c,-d,60000,-i,1000,-l,../var/log/program-name.%date

This example should record hiccups experienced during the running of MyProgram.jar in log file hiccuplog, while at the same time recording the hiccups experienced by a control process running in a separate JVM in the log file c.hiccuplog.

The control process running in a separate JVM is not generated with JDK 9.0.4 and JDK 10.0.1.

One single file is generated:

#[Logged with jHiccup version 2.0.8]
#[Histogram log format version 1.3]
#[StartTime: 1524526871.595 (seconds since epoch), Mon Apr 23 23:41:11 UTC 2018]
"StartTimestamp","Interval_Length","Interval_Max","Interval_Compressed_Histogram"
60.007,1.000,0.033,HISTFAAAACV42pNpmSzMwMDAzAABTBDKTwEo5GawYwGD/QeIyDM+JgBnDAWw
61.007,1.000,0.049,HISTFAAAACh42pNpmSzMwMDAygABTBDKT4GBgdnNYMcCBvsPEJF7PEwdTABzmgYy

No issue with JDK 1.8_0_144: two files are generated.

Thanks for your help.

Regards,

Annabelle

Improvement of sleep in loop

Hi, I found an interesting case in this project.
It has “Thread.sleep()” in a “while(true)” loop. I found some discussion in Stackoverflow and other website. It can be refactored by using a executor service.
https://ejrh.wordpress.com/2012/07/13/sleeping-in-loops-considered-harmful/
https://stackoverflow.com/questions/3535754/netbeans-java-new-hint-thread-sleep-called-in-loop
or
Maybe use CountDownLatch.await to automatically awake and shutdown.

Detailed websites and lines:

620 | https://github.com/giltene/jHiccup/blob/master/src/main/java/org/jhiccup/HiccupMeter.java

Best regards

Visual Basic index out of bounds exception when generating charts

Using jHiccupPlotter, when generating a chart with default options and no SLA

Run-time error '-2147024809 (80070057)': The index into the specified collection is out of bounds.

This happens in the following line inside the drawIntervalChart method.

ch.SeriesCollection.Add Source:=Sheets(sourceSheetName).Range("A1")

Here is the hlog and files generated by the log processor
logs.zip

Wrapper doesn't work as documented

The wrapper script example of:

jHiccup /usr/bin/java -jar MyProgram.jar -a -b -c

Doesn't work. The only way this works is if options are given to jHiccup.

For example:

$ jHiccup java -version
Error: launched with the following args:

Which was parsed as an error, indicated by the following exception:
java.lang.Exception: Invalid args:
[...]

But this works:

$ jHiccup -d 0 java -version

Looks like a bug in the option parsing where options are not, in fact, optional.

failing to connect to remote process

Trying to use jHiccup to monitor a Cassandra process but getting an error. Is there a way to attach? Or what are my alternative ways to monitor using jHiccup?

$ locate tools.jar
/usr/java/jdk1.7.0_76/lib/tools.jar
$ ps jfax | egrep java
1 20400 20337 20337 ? -1 SLl 397 36362:24 /usr/java/jdk1.7.0_76/jre/bin/java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.3.0.jar ...
$ sudo ./jHiccup -p 20400
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

Statsd/graphite output

We're going to use statsd+graphite for monitoring, and I'd like to see data collected by jhiccup there as well. Would it be possible to send data to statsd/graphite instead of logging it to a file?

Version matching in readme.md

Hello,

it's not a big deal but the Readme.md mentions version 2.0.5 evnev in the 2.0.6 zip archive.

So we don't know if there are big changes between 2.0.5 and 2.0.6.

Kind regards,
Thomas

Interval_Max extending past runtime of jHiccup Jar file

Hello all,

I've been using jHiccup on close to a 5 min interval to listen for pausing on a bare-metal linux machine.

java -jar jHiccup.jar -t 295000

Normally the pausing stays within a pretty small timeframe, but on one of the files we had a pause of 5841155.523. Accounting for it being in milliseconds this is still 5,841.15 seconds which is way over my 5 min interval the profiler runs for.

I was wondering if we might know what occurred to cause this?

Attached is the .hlog file in question along with an example of a normal run for my process.
suspect_file.csv
normal_run.csv

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.