increasing memory usage

Mahmood Rahmani mahmoodr at kth.se
Thu Jan 28 08:36:21 EST 2010


Thanks Trustin for the comment,

I have added a WriteTimeoutHandler and now it raises the exception and reconnects as you mentioned, but still the problem of getting the OutOfMemoryError exists! 
I have created a heap dump (http://tinyurl.com/yefyjxf) for this case and hope you have time to look at it and see if the buffer problem has been solved or if there's something  else which causes the out of memory error.

Thanks a lot.
Cyrus
 

On Jan 28, 2010, at 3:04 AM, Trustin Lee (이희승) wrote:

> You could use WriteTimeoutHandler in org.jboss.netty.handler.timeout.
> It raises an exceptionCaught event when write does not complete within a
> certain period.
> 
> HTH,
> Trustin
> 
> Mahmood Rahmani wrote:
>> let me explain it a little bit. 
>> 
>> The server is completely out of my hand. According to a protocol defined by the server developers, a client first logs in and then waits for data. Each time the client receives a message, it has to send an acknowledge ( [ACK] string) as respond. Otherwise, the server stops pushing data.
>> I guess the socket buffer is full because of those ack sent by the client.
>> 
>> knowing that server does not respond to what client sends (the ack-s) would you please tell me how can I check to see the buffer is full? 
>> btw, is there a gentle way of disconnecting the channel without raising many exceptions?
>> 
>> thanks.
>> Cyrus
>> 
>> On Jan 27, 2010, at 3:12 PM, Trustin Lee (이희승) wrote:
>> 
>>> According to the heap dump, a lot of buffers are stuck in the event
>>> queue of a NioClientSocketChannel.  The channel's interestOps is 5
>>> (OP_READ + OP_WRITE), which means the channel's socket send buffer is
>>> full.  Because your write request cannot be completed due to the full
>>> socket buffer, it will be kept in the event queue and eventually cause OOME.
>>> 
>>> Why is the socket buffer full?  It's perhaps because the server is not
>>> reading the data you are sending at all.  You have to disconnect or stop
>>> sending data in such a case.
>>> 
>>> Generally, such a problematic server does not send a response message
>>> for the message you've sent.  You could maintain an integer variable
>>> that counts the number of unanswered requests and disconnect if the
>>> counter becomes greater than a certain threshold.  In a normal
>>> connection, the counter will be increased and then decreased because the
>>> responses will be received fairly quickly.
>>> 
>>> Just in case you think the server is just fine and something's wrong
>>> with Netty, provide me the full source code of the client-server pair
>>> that reproduces the problem.
>>> 
>>> HTH,
>>> Trustin
>>> 
>>> Mahmood Rahmani wrote:
>>>> sorry, i meant -Xmx16m
>>>> 
>>>> 
>>>> On Jan 27, 2010, at 2:13 PM,  wrote:
>>>> 
>>>>> here is the heap dump for -Xmx96m:
>>>>> http://tinyurl.com/yeggxb7
>>>>> 
>>>>> 
>>>>> 
>>>>> On Jan 27, 2010, at 12:53 PM, Trustin Lee (이희승) wrote:
>>>>> 
>>>>>> Oh, that's too bad.  Then could you post the heap dump file?  You can
>>>>>> configure your VM to generate heap dump on OutOfMemoryError:
>>>>>> 
>>>>>>  -XX:+HeapDumpOnOutOfMemoryError
>>>>>> 
>>>>>> For more information on generating heap dump, read this article:
>>>>>> 
>>>>>>  http://blogs.sun.com/alanb/entry/heap_dumps_are_back_with
>>>>>> 
>>>>>> I would still recommend to decrease the max heap size so that you can
>>>>>> get OOME sooner so that heap dump is generated sooner.
>>>>>> 
>>>>>> cyrus77 wrote:
>>>>>>> Hi, 
>>>>>>> 
>>>>>>> Thanks for your reply,
>>>>>>> 
>>>>>>> Unfortunately yes, I get OutOfMemoryError.
>>>>>>> How can we investigate it? any idea? 
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Cyrus
>>>>>>> 
>>>>>>> 
>>>>>>> On Jan 27, 2010, at 11:31 AM, Trustin Lee [via Netty Forums and Mailing Lists] wrote:
>>>>>>> 
>>>>>>>> If you do not get an OutOfMemoryError, it is safe to decrease the 
>>>>>>>> maximum heap size of the VM with -Xmx option.  I'd cut down to 96MB 
>>>>>>>> (i.e. -Xmx96m). 
>>>>>>>> 
>>>>>>>> If you get an OutOfMemoryError eventually, that's more like a memory 
>>>>>>>> leak that needs more investigation. 
>>>>>>>> 
>>>>>>>> cyrus77 wrote:
>>>>>>>> 
>>>>>>>>> Hi, 
>>>>>>>>> 
>>>>>>>>> I am using Netty to develop a simple TCP client and connect to a server to 
>>>>>>>>> receive data 24x7. The data being transferred is not much, its around 100KB 
>>>>>>>>> to 200KB per minute. 
>>>>>>>>> 
>>>>>>>>> The problem is that the client starts allocating memory gradually and after 
>>>>>>>>> some hours or a day (depending on how much data is being sent by the server 
>>>>>>>>> to this client) the allocated heap memory reaches up to 500 MB! 
>>>>>>>>> 
>>>>>>>>> The thing is that even if I do nothing with the message (do nothing in 
>>>>>>>>> messageReceived method) the problem still exist! 
>>>>>>>>> 
>>>>>>>>> I attached the code if you would like to take a look. 
>>>>>>>>> http://n2.nabble.com/file/n4466226/code.java code.java 
>>>>>>>>> 
>>>>>>>>> Do you have any idea what is wrong with it? 
>>>>>>>>> 
>>>>>>>>> Thanks, 
>>>>>>>>> Cyrus 
>>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> what we call human nature in actuality is human habit 
>>>>>>>> http://gleamynode.net/
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________ 
>>>>>>>> netty-users mailing list 
>>>>>>>> [hidden email] 
>>>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>>> 
>>>>>>>> signature.asc (268 bytes) Download Attachment
>>>>>>>> — Trustin Lee, http://gleamynode.net/
>>>>>>>> 
>>>>>>>> 
>>>>>>>> View message @ http://n2.nabble.com/increasing-memory-usage-tp4466226p4466366.html 
>>>>>>>> To unsubscribe from increasing memory usage, click here.
>>>>>>>> 
>>>>>> -- 
>>>>>> what we call human nature in actuality is human habit
>>>>>> http://gleamynode.net/
>>>>>> 
>>>>>> 
>>>>>> <signature.asc>_______________________________________________
>>>>>> netty-users mailing list
>>>>>> netty-users at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>> _______________________________________________
>>>>> netty-users mailing list
>>>>> netty-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>> 
>>>> 
>>>> ------------------------------------------------------------------------
>>>> 
>>>> _______________________________________________
>>>> netty-users mailing list
>>>> netty-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>> -- 
>>> what we call human nature in actuality is human habit
>>> http://gleamynode.net/
>>> 
>>> 
>>> <signature.asc>_______________________________________________
>>> netty-users mailing list
>>> netty-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/netty-users
>> 
>> 
>> _______________________________________________
>> netty-users mailing list
>> netty-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/netty-users
> 
> -- 
> what we call human nature in actuality is human habit
> http://gleamynode.net/
> 
> 
> <signature.asc>_______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users




More information about the netty-users mailing list