[ 
https://issues.apache.org/activemq/browse/AMQ-1873?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=55096#action_55096
 ] 

Alex Hollerith commented on AMQ-1873:
-------------------------------------

config:
<policyEntry queue=">" producerFlowControl="true" memoryLimit="5mb">

setup:
1 perl stomp producer producing into a queue,
  connecting and disconnecting on every post,
  rather low frequency of posts (0.5/minute)
0 consumers

behaviour:
works OK until around 68 messages are in the queue (surely depends on the size 
of the messages)

after that you get this in the log:
2009-10-29 20:32:05,189 | INFO  | Usage Manager memory limit reached on 
queue://test.soccerfeeds.queue. Producers will be throttled to the rate at 
which messages are removed <...>

And while the activemq service is in that "throttling producers" state you will 
see CLOSE_WAIT sockets building up:
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:41519    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:36141    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:45840    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:43793    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:40212    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:44060    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:43776    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:44032    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:43781    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:40200    
CLOSE_WAIT
tcp        0      0 ::ffff:10.60.1.51:61613     ::ffff:10.60.1.206:44045    
CLOSE_WAIT

You can watch the numbers grow with:
watch --interval=5 'netstat -an |grep tcp |grep 61613 | grep CLOSE_WAIT |wc -l'

Every post increases the number of CLOSE_WAIT sockets by 1. And the sockets 
will not go away, the number seems to be steadily growing.

Just consume one single message (we did it via the admin webinterface) and the 
number of sockets in CLOSE_WAIT drops to 0 instantly.

[r...@bladedist01 activemq]# netstat -an |grep tcp |grep 61613
tcp        0      0 :::61613                    :::*                        
LISTEN

Our theory is that activemq does somehow manage to build up sockets in 
CLOSE_WAIT state while it is "throttling producers" mode on a given queue 
until, eventually, the system runs out of resources (file descriptors in this 
case).

> Stomp connections doesn't seem to be released cleanly (Too many open files 
> error)
> ---------------------------------------------------------------------------------
>
>                 Key: AMQ-1873
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1873
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.1.0
>         Environment: Linux RHEL 4
> java version "1.5.0_15"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_15-b04)
> Java HotSpot(TM) Server VM (build 1.5.0_15-b04, mixed mode)
>            Reporter: Julien Devemy
>             Fix For: 5.4.0
>
>         Attachments: activemq.xml
>
>
> I'm actually testing ActiveMQ with a python stomp Client (stomp.py 
> http://www.briggs.net.nz/log/projects/stomppy/).
> I'm trying to load the broker with ~200 producers (on ~200 hosts) feeding one 
> TOPIC for only one consumer.
> Everything is working almost fine until the client connection fails.
> The ActiveMQ log displays :
> ...
> 2008-07-30 09:28:43,665 [localhost:61613] ERROR TransportConnector            
>  - Could not accept connection : Too many open files
> 2008-07-30 09:28:43,665 [localhost:61613] DEBUG TransportConnector            
>  - Reason: Too many open files
> java.net.SocketException: Too many open files
>       at java.net.PlainSocketImpl.socketAccept(Native Method)
>       at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>       at java.net.ServerSocket.implAccept(ServerSocket.java:450)
>       at java.net.ServerSocket.accept(ServerSocket.java:421)
>       at 
> org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:221)
>       at java.lang.Thread.run(Thread.java:595)
> When I look at the open files (or connections) (with lsof) I see 65446 lines 
> like :
> java    26765 root *066u  sock        0,4          7534034 can't identify 
> protocol
> This seems to indicate that ActiveMQ doesn't totally released the UNIX socket
> I'm attaching the activemq.xml conf file.

-- 
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