Giter VIP home page Giter VIP logo

Comments (4)

komamitsu avatar komamitsu commented on August 18, 2024

Yeah. That's a good point.

BufferPool in Fluency contains some buffer chunks. The sizes of the chunks are multiples of initialBufferSize. So it's possible some parts of buffer chunks aren't used. And the total size of used buffer chunks is related to whether buffer is full.

Also, the situation of testBufferFullException is really unusual using StuckSender. In the test, buffered chunks aren't flushed at all and Fluency keeps to try to expand chunks multiplying by 2.

If we modify the buffer configuration in testBufferFullException like this, it can use the total allocated buffer up to 87.5%.

PackedForwardBuffer.Config bufferConfig =
                               new PackedForwardBuffer.Config().setChunkInitialSize(64)
                                .setMaxBufferSize(2560).setChunkRetentionSize(64);

You can also test it with an actual Fluentd using FluencyTest#testWithRealFluentd https://github.com/komamitsu/fluency/blob/master/src/test/java/org/komamitsu/fluency/FluencyTest.java#L1005

In this case, the buffer usage was up to 532676608 / 536870912 = 99%.

00:45:55.731 ERROR [pool-3-thread-4] o.k.f.Fluency emit() failed due to buffer full. Flushing buffer. Please try again...
org.komamitsu.fluency.BufferFullException: Buffer is full. config=Config{baseConfig=Config{maxBufferSize=536870912, ackResponseMode=false, fileBackupDir='null', fileBackupPrefix='null', jacksonModules=[]}, chunkInitialSize=1048576, chunkExpandRatio=2.0, chunkRetentionSize=4194304, chunkRetentionTimeMillis=400}, bufferPool=BufferPool{bufferPool={1048576=[], 2097152=[], 8388608=[], 4194304=[]}, allocatedSize=532676608, initialBufferSize=1048576, maxBufferSize=536870912}
	at org.komamitsu.fluency.buffer.PackedForwardBuffer.prepareBuffer(PackedForwardBuffer.java:73)

BTW, I found there is a room to improve buffer release a bit in BufferPool thanks to your report. I'll take care of it later as another pull request. Thanks

from fluency.

jklap avatar jklap commented on August 18, 2024

I'm assuming this might also be related to why calls to getBufferedDataSize() seems to be larger then actual? I haven't dug into this suspected issue yet it's just been an observation with calling getBufferedDataSize() as part of a background monitoring thread.

from fluency.

komamitsu avatar komamitsu commented on August 18, 2024

@jklap I can't reproduce the issue you wrote above. Can you give me an example code that reproduces that?

from fluency.

komamitsu avatar komamitsu commented on August 18, 2024

I'm closing this issue for now. If you still have any trouble, feel free to reopen it.

from fluency.

Related Issues (20)

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.