R.I.Pienaar created AMQ-3819: -------------------------------- Summary: 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 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