I ran with paranoid while observing the leak and got no messages from the
ResourceLeakDetector.

Initial results from recycler maxCapacity of 0 are looking positive with
respect to the leak. However, I did see a large spike of NIO memory
allocated (1G) where the Netty 3 version of this app receiving similar
traffic peaks at about 1/10th that. I'll let this run for a while and
report back later with the full results.

On Tue, Jul 19, 2016 at 2:59 PM, 'Norman Maurer' via Netty discussions <
[email protected]> wrote:

> Can you do me a favour and run with:
>
> -Dio.netty.recycler.maxCapacity=0
>
> And let me know if you still see some leaks ?
>
>
>
> On 19 Jul 2016, at 20:50, Chris Conroy <[email protected]> wrote:
>
> 4.1.0.Final
>
> On Tue, Jul 19, 2016 at 2:48 PM, 'Norman Maurer' via Netty discussions <
> [email protected]> wrote:
>
>> Are you using 4.0 or 4.1 ?
>>
>> On 19 Jul 2016, at 20:42, Chris Conroy <[email protected]> wrote:
>>
>> I have not been able to reproduce locally yet, but I do see it in a
>> cluster that takes a lot of varied traffic. The leak detector has not fired
>> for this under advanced. I will give paranoid a shot to be safe, but it's
>> my understanding that the leak detection framework is more for dealing with
>> pooled byte buf misuse, but in this case I am exclusively using unpooled
>> heap byte bufs: these are just the socket direct byte bufs that appear to
>> be leaking.
>>
>> I meant to add this earlier: The path to GC root goes:
>>
>> io.netty.buffer.ByteBufUtil$ThreadLocalUnsafeDirectByteBuf
>>   io.netty.util.Recycler$DefaultHandle
>>     io.netty.util.Recycler$DefaultHandle[]
>>       io.netty.util.Recycler#Stack
>>         java.lang.Object[]
>>           io.netty.util.internal.InternalThreadLocalMap
>>             ... (more thread local map refs up to java.lang.Thread)
>>
>>
>>
>> On Tuesday, July 19, 2016 at 2:17:25 PM UTC-4, Norman Maurer wrote:
>>>
>>> Can you provide a reproducer? Also did you try to run with paranoid leak
>>> detection
>>>
>>> Am 19.07.2016 um 20:04 schrieb Chris Conroy <[email protected]>:
>>>
>>> Ah okay: I didn't see the calls to failFlushed since they occur above
>>> the stanza I found suspicious.
>>>
>>> So, the above explanation is probably not correct. Still, I am seeing a
>>> leak where DirectByteBufs are rooted to the recycler, and the speed at
>>> which these buffers leak appears to be correlated with slow/partial readers.
>>>
>>> On Monday, July 18, 2016 at 4:36:31 PM UTC-4, Norman Maurer wrote:
>>>>
>>>> failFlushed(...) should be called to fail and release all flushed
>>>> messages.
>>>>
>>>> Are you saying this not happens?
>>>>
>>>> Am 18.07.2016 um 22:02 schrieb Chris Conroy <[email protected]>:
>>>>
>>>> I’ve been trying to track down a NIO memory leak that occurs in a Netty
>>>> application I am porting from Netty 3 to Netty 4. This leak does not occur
>>>> in the Netty 3 version of the application.
>>>>
>>>> For now, I’m using only unpooled heap buffers in Netty 4, but NIO
>>>> buffers do come into play for socket communication.
>>>>
>>>> I’ve captured a few heap dumps from affected instances, and in each it
>>>> appears that the leaked DirectByteBuf java objects are rooted in an
>>>> io.netty.util.Recycler.
>>>>
>>>> These buffers remain indefinitely: I can disable the application to
>>>> drain traffic and force GCs, but the # of NIO buffers and NIO allocated
>>>> space stays flat.
>>>>
>>>> The issue is likely related to slow readers. However, the leak persists
>>>> long after all channels have been closed.
>>>>
>>>> I implemented a writability listener and the leak does appear to go
>>>> away if I stop writing to a channel after it goes unwritable. This is good,
>>>> but I’m still worried that this just makes the problem less likely since
>>>> it’s still possible to write/flush and have pending data: writability just
>>>> limits how much data will be buffered.
>>>>
>>>> Digging into ChannelOutBoundBuffer I see the following stanza in close:
>>>>
>>>>
>>>> // Release all unflushed messages.
>>>> try {
>>>>     Entry e = unflushedEntry;
>>>>     while (e != null) {
>>>>         // Just decrease; do not trigger any events via 
>>>> decrementPendingOutboundBytes()
>>>>         int size = e.pendingSize;
>>>>         TOTAL_PENDING_SIZE_UPDATER.addAndGet(this, -size);
>>>>
>>>>         if (!e.cancelled) {
>>>>             ReferenceCountUtil.safeRelease(e.msg);
>>>>             safeFail(e.promise, cause);
>>>>         }
>>>>         e = e.recycleAndGetNext();
>>>>     }
>>>> } finally {
>>>>     inFail = false;
>>>> }
>>>> clearNioBuffers();
>>>>
>>>> This seems a bit curious to me: why are flushed buffers not released
>>>> here? Since the leak seems to be rooted in the Recycler, this could be the
>>>> culprit…What do you think?
>>>> ​
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Netty discussions" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/netty/CA%2B%3DgZKADssKFcs-WCc8%2Br2RWrvbgg3csaJPdcsXL_mCD5yG2bg%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/netty/CA%2B%3DgZKADssKFcs-WCc8%2Br2RWrvbgg3csaJPdcsXL_mCD5yG2bg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Netty discussions" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/netty/b66894c3-1e65-4235-9201-b4f1dca11a81%40googlegroups.com
>>> <https://groups.google.com/d/msgid/netty/b66894c3-1e65-4235-9201-b4f1dca11a81%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Netty discussions" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/netty/e823494b-caf1-4b1f-b629-405bbdbf4c40%40googlegroups.com
>> <https://groups.google.com/d/msgid/netty/e823494b-caf1-4b1f-b629-405bbdbf4c40%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Netty discussions" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/netty/Ve4lnRvFXjM/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/netty/F788648D-2C4E-4031-BD2A-EFFAEED64BDC%40googlemail.com
>> <https://groups.google.com/d/msgid/netty/F788648D-2C4E-4031-BD2A-EFFAEED64BDC%40googlemail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Netty discussions" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/netty/CA%2B%3DgZKAiQseAviHAkbE-eoybDWQsGY1ek6LtXkMCebcMd4WU4g%40mail.gmail.com
> <https://groups.google.com/d/msgid/netty/CA%2B%3DgZKAiQseAviHAkbE-eoybDWQsGY1ek6LtXkMCebcMd4WU4g%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Netty discussions" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/netty/Ve4lnRvFXjM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/netty/925935D9-92F1-4516-B9E9-524991BF053E%40googlemail.com
> <https://groups.google.com/d/msgid/netty/925935D9-92F1-4516-B9E9-524991BF053E%40googlemail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Netty discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/netty/CA%2B%3DgZKDfjjLkj1yytjhrU564K3Z36SOaqfuPcER-CK3_vrK16g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to