increasing memory usage

Mahmood Rahmani mahmoodr at kth.se
Wed Jan 27 10:29:01 EST 2010


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




More information about the netty-users mailing list