[ 
https://issues.apache.org/jira/browse/DIRMINA-764?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833869#action_12833869
 ] 

Victor N commented on DIRMINA-764:
----------------------------------

I am not 100% sure but IMHO when you run stress clients and the server on the 
same host, so the CPU and I/O activity are high, there may be troubles in 
testing.
I would propose to run the same test in LAN environment - all clients on a 
separate machine or even multiple machines.

As for TCP buffers, they do not depend on how you use your socket - via 
blocking or non-blocking I/O, locally or remotely. If your client works slowly 
(under high load on your computer), it will read slowly; in addition, if it has 
a small TCP buffer for reading - the whole process of TCP transmission is 
stalled, the server will not send to socket anymore (remember how the 
congestion control algorithm in TCP works?)

Of course, maybe this is not the case in your test, so it would be useful to 
compare with another mina build before you start digging into the code ;)

> DDOS possible in only a few seconds...
> --------------------------------------
>
>                 Key: DIRMINA-764
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-764
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.0-RC1
>            Reporter: Emmanuel Lecharny
>            Priority: Blocker
>             Fix For: 2.0.0
>
>         Attachments: screenshot-1.jpg, screenshot-2.jpg
>
>
> We can kill a server in just a few seconds using the stress test found in 
> DIRMINA-762.
> If we inject messages with no delay, using 50 threads to do that, the 
> ProtocolCodecFilter$MessageWriteRequest is stuffed with hundred of thousands 
> messages waiting to be written back to the client, with no success.
> On the client side, we receive almost no messages :
> 0 messages/sec (total messages received 1)
> 2 messages/sec (total messages received 11)
> 8 messages/sec (total messages received 55)
> 8 messages/sec (total messages received 95)
> 9 messages/sec (total messages received 144)
> 3 messages/sec (total messages received 162)
> 1 messages/sec (total messages received 169)
> ...
> On the server side, the memory is totally swamped in 20 seconds, with no way 
> to recover :
> Exception in thread "pool-1-thread-1" java.lang.OutOfMemoryError: Java heap 
> space
> (see graph attached)
> On the server, ConcurrentLinkedQueue contain the messages to be written (in 
> my case, 724 499 Node are present). There are also 361629 
> DefaultWriteRequests, 361628 DefaultWriteFutures, 361625 SimpleBuffer, 361 
> 618 ProtocolCodecFilter$MessageWriteRequest and 361 614 
> ProtocolCodecFilter$EncodedWriteRequests.
> That mean we don't flush them to the client at all. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to