Comments (4)
Try setting property -Dio.netty.eventLoopThreads=N
, where N > 1 at Riemann startup. See [1].
from riemann.
I misread your message, so my comment above might not solve your issue. Try toying with io.netty.recycler.maxCapacity.default
as well. netty has builtin recycler to reduce GC pressure, and the value should be > 256 (default is 262144).
Also, this will not solve your problems if you have badly designed streams that will indefinitely aggregate values. Small reproducible example and full stacktrace would be helpful.
from riemann.
I should have been clearer: the executor in question is the so called riemann netty event-executor
which is where streams are handled and not Netty threads, defined here. The executor is a io.netty.util.concurrent.SingleThreadEventExecutorio.netty.util.concurrent.SingleThreadEventExecutor
with default DEFAULT_MAX_PENDING_EXECUTOR_TASKS
of int max value, see here - this can be changed by the io.netty.eventexecutor.maxPendingTasks
system property. However I believe that this is a bad default for a system like Riemann and also should be set via the Riemann config and not through an obscure Netty system property unknown to most users.
from riemann.
So, it turns out that Riemann is using io.netty.util.concurrent.DefaultEventExecutorGroup
which extends io.netty.util.concurrent.MultithreadEventExecutorGroup
; every executor in the executor group has its own queue with size io.netty.eventexecutor.maxPendingTasks
and Riemann uses (.. Runtime getRuntime availableProcessors)
threads, so total queue size is `cpus * maxPendingTasks.
Note that the event executor group chooses an executor queue in a round robin fashion and each channel/socket is bound to an executor. This creates another performance problem as queueing in multiple queues is prone to higher latency and lower throughput (this is a known result in queueing theory - short explanation is that queue lengths have some variation so "evenly distributed" load will queue already overloaded queues). I assume this is done to preserve event ordering as events from the same client will be enqueued and handled in order, but this guarantee is not documented or promised anywhere in Riemann.
from riemann.
Related Issues (20)
- Slack notifications do not work with new slack app webhooks
- Which versions of riemann, if any, are susceptible to log4shell (log4j vulnerability)? HOT 1
- Docker image builds switched architecture HOT 2
- Store the events for riemann in an external database HOT 3
- functions using riemann.folds/count drops suddenly on high load HOT 2
- Logback needs update to 1.2.10 HOT 1
- [influxdb.clj] SSLSocketfactory not supported on JDK 9+ HOT 1
- Has 0.3.8 been retagged? HOT 1
- "Interrupted consumption" from riemann.kafka and it never recovers HOT 3
- `-XX:-StackTraceInThrowable` causes a index out of bounds exception HOT 1
- amazonica throws RuntimeException on jdk 17/18
- Expired events sometimes have the `:time` field set to a value of type `Ratio` HOT 2
- `influxdb2` keeps accumulating background threads HOT 3
- Riemann becomes unresponsive when CPU Count count is increased HOT 9
- "Throttle" is not working as expected HOT 5
- Query of `riemann streams rate` & instrumentation HOT 1
- Update to Clojure 1.11.1 HOT 5
- Riemann getting lot's of error "Connection reset by peer" HOT 1
- Implement InfluxDB 2.0 plugin HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from riemann.