Best practices for Inter Step Buffer (Nats JetStream)? #2239
Replies: 7 comments 15 replies
-
Hey @qianbeibuzui
Jetstream maxMsgs are the limit on the number of messages that can be stored in a stream, this will apply as an upper bound. Beyond these limits the discard policy kicks in and the messages are deleted/discarded accordingly.
So there is no bug, Numaflow will try to honor the bufferMaxLength first. JetStream.maxMss is honored at a stream level by Jetstream.
This is the Jetstream server resource limit that is used, if you are using memory mode they streams will be stored in memory. Also for your
I see that you are using stream replication as 1 with in memory mode. This makes it highly temporal For resiliency we should be using a File mode, along with a higher replication factor. |
Beta Was this translation helpful? Give feedback.
-
What is the TPS you are trying to hit? Also, are you doing reduce operations also in the pipeline? |
Beta Was this translation helpful? Give feedback.
-
That is right. MonoVertex does not support builtin Kafka yet due to some breaking changes. We will support it in 1.5 release (approx ETA Feb/01/2025). |
Beta Was this translation helpful? Give feedback.
-
Each vertex has its own buffer, so each vertex will get independent buffers with independent limits. You can have 2 vertices without any problems. |
Beta Was this translation helpful? Give feedback.
-
Hello @qianbeibuzui |
Beta Was this translation helpful? Give feedback.
-
@qianbeibuzui I'm referring the to data that is getting stored in the stream. What is the average size of the messages flowing in the pipeline? |
Beta Was this translation helpful? Give feedback.
-
@kohlisid Do you need me to provide any additional information to assist you in troubleshooting? |
Beta Was this translation helpful? Give feedback.
-
My Inter Step Buffer (Nats JetStream) and vertices settings are shown in the figure:
I have three doubts here:
What is the relationship between JetStream.maxMss: 50000 and verticals.limits.bufferMaxLength: 30000? If I set two vertices in the Pipeline with a buffer MaxLength of 30000, will there be a bug? What is the best practice plan?
2. JetStream.max_cemory_store: 1073741824, I set 1Gi of memory here, but the actual pod is occupying 4GB of memory. What is the reason for this? And when preparing to break through 4G memory, it seems to automatically release memory? As shown in the picture:
3.What is the best practice for memory and maxDLLs for Inter Step Buffer (Nats JetStream)?
Beta Was this translation helpful? Give feedback.
All reactions