Giter Site home page Giter Site logo

dark0096 / graphene Goto Github PK

View Code? Open in Web Editor NEW

This project forked from einsamhauer/disthene-reader

9.0 9.0 2.0 2.13 MB

A highly scalable real-time metric system

Home Page: https://graphene-monitoring.readthedocs.io

License: MIT License

Java 97.68% ANTLR 0.32% Kotlin 2.00%
graphene graphite graphite-api java kotlin metric monitoring time-series

graphene's People

Contributors

dark0096 avatar einsamhauer avatar ekdxhrl0096 avatar jerome89 avatar kwarunek avatar theelectriccapybara avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

graphene's Issues

ResponseFormatter might cause serious performance issue!

Currently only JSON response is supported, but it can cause serious performance issue.
The following is code block from ResponseFormatter.java.

        for(TimeSeries timeSeries : timeSeriesList) {
            List<String> datapoints = new ArrayList<>();
            for(int i = 0; i < timeSeries.getValues().length; i++) {
                String stringValue;
                if (timeSeries.getValues()[i] == null) {
                    stringValue = "null";
                } else {
                    stringValue = GraphiteUtils.formatDoubleSpecialPlain(timeSeries.getValues()[i]);
                }

                datapoints.add("[" + stringValue + ", " + (timeSeries.getFrom() + timeSeries.getStep() * i) + "]");
            }
            results.add("{\"target\": " + gson.toJson(timeSeries.getName()) + ", \"datapoints\": [" + Joiner.on(", ").join(datapoints) + "]}");
        }
        String responseString = "[" + Joiner.on(", ").join(results) + "]";

Joiner.on(", ").join(datapoints) can be bottleneck if ArrayList 'datapoints' is large because Joiner uses StringBuilder to append each data in String, but the capacity of StringBuilder is not pre-determined, so it continuously copies whole array whenever it exceeds its capacity.

Here is the reference:
https://docs.oracle.com/javase/tutorial/java/data/buffers.html

It is recommend not to use Joiner in this case because it handles arbitrary length of ArrayLists. How about change the code to use StringBuilder directly with proper initialCapacity?

Sometimes, disthene-reader does not respond.

Sometimes, disthene-reader does not respond.

ERROR 01.08.2019 13:21:45,492 [nioEventLoopGroup-6-29] net.iponweb.disthene.reader.handler.RenderHandler  - org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []

Minus index is not supported!

Python version of Graphite supports minus index when we query with aliasByNode, sumSeriesWithWildcards,.. and so on.

Please support this to make it work in the same as in original version of Graphite.

I want to read the last value

I would like to be able to set whether to read the Average value or the Latest value for the Metric value.
image

If you are in the above situation, I want to get the Last value instead of the average value.

SmartSummerize is not working

I want to aggregate metric's resolution 1d.
But it is failed. :(
So could you check SmartSummerize function for me?
Thanks.

disthene-writer OOM invoked!

Please check the memory leak point in disthene project :(

WARN 10.08.2019 23:57:07,642 [cluster1-nio-worker-3] io.netty.channel.AbstractChannelHandlerContext  - An exception 'java.lang.OutOfMemoryError: GC overhead limit exceeded' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
WARN 10.08.2019 23:56:26,557 [nioEventLoopGroup-4-2] io.netty.util.concurrent.SingleThreadEventExecutor  - An event executor terminated with non-empty task queue (50)
Exception in thread "nioEventLoopGroup-4-2" java.lang.OutOfMemoryError: GC overhead limit exceeded
WARN 10.08.2019 23:58:09,616 [cluster1-nio-worker-3] io.netty.channel.AbstractChannelHandlerContext  - An exception 'java.lang.OutOfMemoryError: GC overhead limit exceeded' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
WARN 10.08.2019 23:58:24,854 [nioEventLoopGroup-4-3] io.netty.channel.DefaultChannelPipeline  - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
WARN 11.08.2019 00:00:26,726 [cluster1-nio-worker-3] io.netty.channel.AbstractChannelHandlerContext  - An exception 'java.lang.OutOfMemoryError: GC overhead limit exceeded' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
java.lang.OutOfMemoryError: GC overhead limit exceeded
WARN 11.08.2019 00:01:39,674 [nioEventLoopGroup-4-3] io.netty.util.concurrent.SingleThreadEventExecutor  - An event executor terminated with non-empty task queue (32)
Exception in thread "nioEventLoopGroup-4-3" java.lang.OutOfMemoryError: GC overhead limit exceeded```

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.