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

Timothy Bish updated AMQ-3819:
------------------------------

    Attachment: StompNIOSSLLoadTest.java
                StompLoadTest.java

Created a Java version of the test to get the ball rolling.  Didn't completely 
match the configuration but did notice that if you crank up the number of 
messages the test sends the test will fail for NIO+SSL and the CPU will be 
running wild.  Didn't have time to look deeper today.
                
> high cpu with stomp+nio+ssl and many subscriptions
> --------------------------------------------------
>
>                 Key: AMQ-3819
>                 URL: https://issues.apache.org/jira/browse/AMQ-3819
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: stomp
>    Affects Versions: 5.6.0
>         Environment: CentOS 6, RC of 5.6.0
> java version "1.6.0_22"
> OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-x86_64)
> OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
>            Reporter: R.I.Pienaar
>         Attachments: StompLoadTest.java, StompNIOSSLLoadTest.java
>
>
> Switching an existing workload from a transport:
> {quote}
> <transportConnector name="verified_stompssl"  
> uri="stomp+ssl://0.0.0.0:6165?needClientAuth=true"/>
> {quote}
> to
> {quote}
> <transportConnector name="verified_stompssl"  
> uri="stomp+nio+ssl://0.0.0.0:6165?needClientAuth=true"/>
> {quote}
> showed the CPU profile to go from 1-5% to 300% constantly on a 8 core server
> I was able to recreate this using a ruby client @ 
> http://devco.net/rip/amq_560_stomp_nio_ssl_tester.rb
> The important combinations are:
>  * I am connecting to a stomp+nio+ssl port
>  * I am creating the subscriptions to the 10 queus and topics
> If I change either of these variables - like just commenting out the loop 
> that does those subscriptions - then the CPU load is acceptable.
> I analysed the running VM with VisualVM and found that 
> transport.nio.NIOSSLTransport.serviceRead() is the busy thread.  
> My activemq.xml is:
> {noformat}
> <beans
>   xmlns="http://www.springframework.org/schema/beans";
>   xmlns:amq="http://activemq.apache.org/schema/core";
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>   xsi:schemaLocation="http://www.springframework.org/schema/beans 
> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>   http://activemq.apache.org/schema/core 
> http://activemq.apache.org/schema/core/activemq-core.xsd
>   http://activemq.apache.org/camel/schema/spring 
> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd";>
>     <broker xmlns="http://activemq.apache.org/schema/core"; brokerName="amq1" 
> useJmx="true" persistent="true" schedulePeriodForDestinationPurge="60000">
>         <destinationPolicy>
>           <policyMap>
>             <policyEntries>
>               <policyEntry topic=">" producerFlowControl="false"/>
>               <policyEntry queue="*.reply.>" gcInactiveDestinations="true" 
> inactiveTimoutBeforeGC="120000" />
>             </policyEntries>
>           </policyMap>
>         </destinationPolicy>
>         <managementContext>
>           <managementContext connectorPort="1099" 
> jmxDomainName="org.apache.activemq"/>
>         </managementContext>
>         <plugins>
>           <statisticsBrokerPlugin/>
>           <simpleAuthenticationPlugin>
>             <users>
>               <authenticationUser username="test" password="test" 
> groups="admins,everyone"/>
>             </users>
>           </simpleAuthenticationPlugin>
>           <authorizationPlugin>
>             <map>
>               <authorizationMap>
>                 <authorizationEntries>
>                   <authorizationEntry queue=">" write="admins" read="admins" 
> admin="admins" />
>                   <authorizationEntry topic=">" write="admins" read="admins" 
> admin="admins" />
>                 </authorizationEntries>
>               </authorizationMap>
>             </map>
>           </authorizationPlugin>
>         </plugins>
>         <sslContext>
>            <sslContext
>                 keyStore="keystore.jks" keyStorePassword="ohshahCu"
>                 trustStore="truststore.jks" trustStorePassword="ohshahCu"
>            />
>         </sslContext>
>         <systemUsage>
>           <systemUsage>
>             <memoryUsage>
>               <memoryUsage limit="200 mb" />
>             </memoryUsage>
>             <storeUsage>
>               <storeUsage limit="1 gb" />
>             </storeUsage>
>             <tempUsage>
>               <tempUsage limit="1 gb" />
>             </tempUsage>
>           </systemUsage>
>         </systemUsage>
>         <transportConnectors>
>           <transportConnector name="openwire"  uri="tcp://0.0.0.0:6166"/>
>           <transportConnector name="stomp+nio" 
> uri="stomp+nio://0.0.0.0:6163"/>
>           <transportConnector name="stompssl"  
> uri="stomp+ssl://0.0.0.0:6164"/>
>           <transportConnector name="verified_stompssl"  
> uri="stomp+nio+ssl://0.0.0.0:6165?needClientAuth=true"/>
>         </transportConnectors>
>     </broker>
>     <import resource="jetty.xml"/>
> </beans>
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to