perf(veritech): Batch logs before sending to veritech #5611
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR batches logs and sends them every N milliseconds (but will limit batching to 8MB).
One of our theories is we're bogging the reactors sending a log line every 8 nanoseconds. This should help both reduce the total size (only one message overhead per batch instead of per line) and the number of messages.
Draft
Flaw: if a log line is emitted, and no more logs are emitted for a long time, it will sit in the buffer until another log line comes in or . This is not ideal--you'd want users to see the last thing that happened sooner rather than later. I've used systems like this and watching logs while not being sure you're seeing all the logs is a problem--particularly, if there was an error or warning just before a program hung, you wouldn't see it until it eventually timed out.
Improvement: currently this will only cache log lines as long as they are the same level/group/etc. This could be better if it held onto all of these the whole time, but it's unclear how often it happens in practice.