You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by "Isuru Udana Loku Narangoda (JIRA)" <ji...@apache.org> on 2014/07/13 09:38:04 UTC

[jira] [Resolved] (SYNAPSE-989) Extra TCP Connections get created under high concurrency

     [ https://issues.apache.org/jira/browse/SYNAPSE-989?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Isuru Udana Loku Narangoda resolved SYNAPSE-989.
------------------------------------------------

       Resolution: Fixed
    Fix Version/s: 3.0

Fix applied in r1610131

> Extra TCP Connections get created under high concurrency
> --------------------------------------------------------
>
>                 Key: SYNAPSE-989
>                 URL: https://issues.apache.org/jira/browse/SYNAPSE-989
>             Project: Synapse
>          Issue Type: Bug
>            Reporter: Isuru Udana Loku Narangoda
>            Assignee: Isuru Udana Loku Narangoda
>            Priority: Blocker
>             Fix For: 3.0
>
>         Attachments: CloneProxy.xml, SYNAPSE-989.patch
>
>
> This is observable with following proxy configuration. To clearly see the alive connections we need to increase the backend latency.
> <proxy name="CloneProxy" xmlns="http://ws.apache.org/ns/synapse">
>         <target>
>             <inSequence>
>                 <property name="NO_KEEPALIVE" value="true" scope="axis2"/> 
>                 <clone>
>                     <target>
>                         <sequence>
>                             <send>
>                                 <endpoint>
>                                     <address
>                                             uri="http://localhost:9000/services/SimpleStockQuoteService"/>
>                                 </endpoint>
>                             </send>
>                         </sequence>
>                     </target>
>                     <target>
>                         <sequence>
>                             <send>
>                                 <endpoint>
>                                     <address
>                                             uri="http://localhost:9000/services/SimpleStockQuoteService"/>
>                                 </endpoint>
>                             </send>
>                         </sequence>
>                     </target>
>                     <target>
>                         <sequence>
>                             <send>
>                                 <endpoint>
>                                     <address
>                                             uri="http://localhost:9000/services/SimpleStockQuoteService"/>
>                                 </endpoint>
>                             </send>
>                         </sequence>
>                     </target>
>                     <target>
>                         <sequence>
>                             <send>
>                                 <endpoint>
>                                     <address
>                                             uri="http://localhost:9000/services/SimpleStockQuoteService"/>
>                                 </endpoint>
>                             </send>
>                         </sequence>
>                     </target>
>                     <target>
>                         <sequence>
>                             <send>
>                                 <endpoint>
>                                     <address
>                                             uri="http://localhost:9000/services/SimpleStockQuoteService"/>
>                                 </endpoint>
>                             </send>
>                         </sequence>
>                     </target>
>                 </clone>
>             </inSequence>
>             <outSequence>
>                 <aggregate>
>                     <onComplete xmlns:m0="http://services.samples"
>                                 expression="//m0:getQuoteResponse">
>                         <send/>
>                     </onComplete>
>                 </aggregate>
>             </outSequence>
>         </target>
>     </proxy>
> According to this configuration only 5 connections need to be created with the backend server for a single request sent to the proxy. But synapse creates additional connections. Following is the netstat output.
> watch -n1 -d "netstat -n -tap | grep 29860"
> Every 1.0s: netstat -n -tap | grep 29860 
> tcp6       0      0 :::8243                 :::*                    LISTEN      29860/java
> tcp6       0      0 :::46903                :::*                    LISTEN      29860/java
> tcp6       0      0 :::8280                 :::*                    LISTEN      29860/java
> tcp6       0      0 :::1099                 :::*                    LISTEN      29860/java
> tcp6       0      0 127.0.0.1:56884         127.0.0.1:9000          ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:56885         127.0.0.1:9000          ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:56886         127.0.0.1:9000          ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:56887         127.0.0.1:9000          ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:56889         127.0.0.1:9000          ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:56890         127.0.0.1:9000          ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:8280          127.0.0.1:35665         ESTABLISHED 29860/java
> tcp6       0      0 127.0.0.1:56888         127.0.0.1:9000          ESTABLISHED 29860/java
> We can see 7 connections get created. Excess 2 connections remains for sometime after all the other connections get terminated.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org