activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul French <paul.fre...@frenchiesystems.com>
Subject Re: Async Exception: Broken Pipe
Date Fri, 02 Feb 2007 22:34:39 GMT

I will look into this over the weekend and will let you know. My client and
server are both using a single connection (I'm using a
SingleConnectionFactory), the client only uses one session, the server uses
a session per thread. It's when the server is run with 6 or more threads I
get problems.




James.Strachan wrote:
> 
> So first off, ActiveMQ supports auto-reconnection to avoid things
> hanging if for whatever reason a socket is closed by your OS /
> hardware /network
> 
> http://activemq.apache.org/how-can-i-support-auto-reconnection.html
> 
> Also each Connection created in ActiveMQ tends to create a socket and
> a thread on the broker side. So you could increase the parallelism of
> your client while reducing load on the broker by just creating a
> single connection and reusing it across many sessions in your client.
> 
> 
> On 2/2/07, Paul French <paul.french@frenchiesystems.com> wrote:
>>
>> Hello,
>>
>> I have a single client laptop that connects to the broker on another
>> machine, creates a temp queue and sends text messages to a main queue.
>> The
>> client also starts a listener consumer to consume the replies given on
>> the
>> temp queue.
>>
>> The server consumes messages from the main queue does some processing and
>> then replies on the temp queue.
>>
>> The server runs with a pre-configured number of threads. Each thread does
>> the following:
>>
>>     connection = connectionFactory.createConnection();
>>     session = connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
>>     consumer = session.createConsumer(mainQueueName);
>>     producer = session.createProducer(null); // set as null since we do
>> not
>> know the destination until runtime
>>     connection.start();
>>
>> The connection details are as follows:
>>
>>   <bean id="connectionFactory"
>> class="org.springframework.jms.connection.SingleConnectionFactory"
>> destroy-method="destroy">
>>     <property name="targetConnectionFactory">
>>       <bean class="org.apache.activemq.ActiveMQConnectionFactory">
>>         <property name="brokerURL"
>> value="tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1" />
>>         <property name="useAsyncSend"><value>TRUE</value></property>
>>       </bean>
>>     </property>
>>   </bean>
>>
>> When I run with 6 threads I'm usually okay. When I run the server above 7
>> threads I get the following Exception
>>
>> Async exception with no exception listener: java.net.SocketException:
>> Broken
>> pipe
>> java.net.SocketException: Broken pipe
>>         at java.net.SocketOutputStream.socketWrite0(Native Method)
>>         at
>> java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
>>         at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
>>         at
>> org.apache.activemq.transport.tcp.TcpBufferedOutputStream.flush(TcpBu
>> fferedOutputStream.java:109)
>>         at java.io.DataOutputStream.flush(DataOutputStream.java:106)
>>         at
>> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.ja
>> va:119)
>>         at
>> org.apache.activemq.transport.InactivityMonitor.writeCheck(Inactivity
>> Monitor.java:81)
>>         at
>> org.apache.activemq.transport.InactivityMonitor.access$100(Inactivity
>> Monitor.java:35)
>>         at
>> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonit
>> or.java:57)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdap
>> ter.call(Executors.java:431)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.FutureTask.runAndReset
>> (FutureTask.java:198)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExe
>> cutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:189)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExe
>> cutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:213)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Wor
>> ker.runTask(ThreadPoolExecutor.java:650)
>>         at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Wor
>> ker.run(ThreadPoolExecutor.java:675)
>>         at java.lang.Thread.run(Thread.java:595)
>>
>>
>> Once I get this exception no threads can process any messages. Any ideas?
>> What does this Exception message imply? I am running ActiveMQ 4.1.0.
>>
>> The server machine I am using supports 24 simultaneous threads and I want
>> to
>> get up to this number since each server request takes considerable time
>> to
>> process and is highly computational.
>>
>> I am running the broker on the server at the moment. In the meantime I
>> will
>> move the broker on to a different machine to see if that alliviates the
>> problem.
>> --
>> View this message in context:
>> http://www.nabble.com/Async-Exception%3A-Broken-Pipe-tf3160498.html#a8765808
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> 
> James
> -------
> http://radio.weblogs.com/0112098/
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Async-Exception%3A-Broken-Pipe-tf3160498.html#a8776891
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message