You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Eugene Prokopiev <pr...@stc.donpac.ru> on 2006/08/12 09:08:10 UTC

Jencks perfomance tuning

Hi,

Where can I read about Jencks perfomance tuning? For example, I have 
this configuration:

<beans>

	<!-- Geronimo Transaction Manager -->
	<bean id="transactionContextManager" 
class="org.jencks.factory.TransactionContextManagerFactoryBean"/>
	<bean id="geronimo" 
class="org.jencks.factory.GeronimoTransactionManagerFactoryBean"/>
	<bean id="geronimoTransactionManager" 
class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="userTransaction" ref="geronimo" />
	</bean>

	<!-- ActiveMQ Broker configuration -->
	<bean id="broker" class="org.apache.activemq.broker.BrokerService" 
init-method="start" destroy-method="stop">
		<property name="persistent" value="false"/>
		<property name="transportConnectorURIs">
			<list>
				<value>tcp://localhost:5000</value>
				<value>vm://localhost</value>
			</list>
		</property>
	</bean>
	
	<!-- Jencks Connection Manager configuration -->
	<bean id="connectionManager" 
class="org.jencks.factory.ConnectionManagerFactoryBean">
		<property name="transactionSupport">
			<bean class="org.jencks.factory.XATransactionFactoryBean">
				<property name="useTransactionCaching" value="true"/>
				<property name="useThreadCaching" value="false"/>
			</bean>
		</property>
		<property name="poolingSupport">
			<bean class="org.jencks.factory.SinglePoolFactoryBean">
				<property name="maxSize" value="10"/>
				<property name="minSize" value="1"/>
				<property name="blockingTimeoutMilliseconds" value="60"/>
				<property name="idleTimeoutMinutes" value="60"/>
				<property name="matchOne" value="true"/>
				<property name="matchAll" value="true"/>
				<property name="selectOneAssumeMatch" value="true"/>
			</bean>
		</property>
	</bean>

	<!-- JCA ActiveMQ Connection configuration -->
	<bean id="jmsResourceAdapter" 
class="org.apache.activemq.ra.ActiveMQResourceAdapter" depends-on="broker">
		<property name="serverUrl" value="vm://localhost"/>
	</bean>
	<bean id="jmsManagedConnectionFactory" 
class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory">
		<property name="resourceAdapter" ref="jmsResourceAdapter"/>
	</bean>
	<bean id="jmsConnectionFactory" 
class="org.springframework.jca.support.LocalConnectionFactoryBean">
		<property name="managedConnectionFactory" 
ref="jmsManagedConnectionFactory"/>
		<property name="connectionManager" ref="connectionManager"/>
     </bean>

	<!-- Jencks JCA Container configuration -->
	<bean id="jencksJCAContainer" class="org.jencks.JCAContainer">
		<property name="bootstrapContext">
			<bean class="org.jencks.factory.BootstrapContextFactoryBean">
				<property name="threadPoolSize" value="5"/>
			</bean>
		</property>
		<property name="resourceAdapter" ref="jmsResourceAdapter"/>
	</bean>
	<bean id="inboundConnector" class="org.jencks.JCAConnector">
		<property name="jcaContainer" ref="jencksJCAContainer" />
		<property name="activationSpec">
			<bean class="org.apache.activemq.ra.ActiveMQActivationSpec">
				<property name="destination" value="messages.input"/>
				<property name="destinationType" value="javax.jms.Queue"/>
			</bean>
		</property>
		<property name="transactionManager" ref="geronimo"/>
		<property name="ref" value="messageProcessor"/>
	</bean>
	
     <!-- Manager message router configuration -->
     <bean id="messageProcessor" class="manager.broker.MessageProcessor">
		<property name="jmsTemplate">
			<bean class="org.springframework.jms.core.JmsTemplate">
				<property name="connectionFactory" ref="jmsConnectionFactory"/>
			</bean>
		</property>
	</bean>

</beans>

Need I change it anyway to get the best perfomance? Need I make some 
changes in java command line for starting up JVM? Need I consider my OS 
or hardware for setting params? My OS is Linux (kernel 2.6.16). My 
hardware is 1G RAM and 2 Xeon 3GHz with hyper-threading turned on. There 
are no any other applications will be run on this machine except spring 
context above.

--
Thanks,
Eugene Prokopiev


Re: Jencks perfomance tuning

Posted by Eugene Prokopiev <pr...@stc.donpac.ru>.
> I'd maybe increase your threadPoolSize to something fairly large if
> you want to handle high numbers of concurrent processing - say 500.

I tried to setup threadPoolSize to 25 :) But even in this case 1000 
messages was send to messages.quickly, but messageProcessor bean doesn't 
receive any message :(

So, it seems threadPoolSize must be smaller then maxPoolSize defined in 
org.jencks.factory.SinglePoolFactoryBean.


Re: Jencks perfomance tuning

Posted by James Strachan <ja...@gmail.com>.
I'd maybe increase your threadPoolSize to something fairly large if
you want to handle high numbers of concurrent processing - say 500.

more detail here

http://incubator.apache.org/activemq/activation-spec-properties.html
http://incubator.apache.org/activemq/resource-adapter-properties.html

On 8/12/06, Eugene Prokopiev <pr...@stc.donpac.ru> wrote:
> Hi,
>
> Where can I read about Jencks perfomance tuning? For example, I have
> this configuration:
>
> <beans>
>
>         <!-- Geronimo Transaction Manager -->
>         <bean id="transactionContextManager"
> class="org.jencks.factory.TransactionContextManagerFactoryBean"/>
>         <bean id="geronimo"
> class="org.jencks.factory.GeronimoTransactionManagerFactoryBean"/>
>         <bean id="geronimoTransactionManager"
> class="org.springframework.transaction.jta.JtaTransactionManager">
>                 <property name="userTransaction" ref="geronimo" />
>         </bean>
>
>         <!-- ActiveMQ Broker configuration -->
>         <bean id="broker" class="org.apache.activemq.broker.BrokerService"
> init-method="start" destroy-method="stop">
>                 <property name="persistent" value="false"/>
>                 <property name="transportConnectorURIs">
>                         <list>
>                                 <value>tcp://localhost:5000</value>
>                                 <value>vm://localhost</value>
>                         </list>
>                 </property>
>         </bean>
>
>         <!-- Jencks Connection Manager configuration -->
>         <bean id="connectionManager"
> class="org.jencks.factory.ConnectionManagerFactoryBean">
>                 <property name="transactionSupport">
>                         <bean class="org.jencks.factory.XATransactionFactoryBean">
>                                 <property name="useTransactionCaching" value="true"/>
>                                 <property name="useThreadCaching" value="false"/>
>                         </bean>
>                 </property>
>                 <property name="poolingSupport">
>                         <bean class="org.jencks.factory.SinglePoolFactoryBean">
>                                 <property name="maxSize" value="10"/>
>                                 <property name="minSize" value="1"/>
>                                 <property name="blockingTimeoutMilliseconds" value="60"/>
>                                 <property name="idleTimeoutMinutes" value="60"/>
>                                 <property name="matchOne" value="true"/>
>                                 <property name="matchAll" value="true"/>
>                                 <property name="selectOneAssumeMatch" value="true"/>
>                         </bean>
>                 </property>
>         </bean>
>
>         <!-- JCA ActiveMQ Connection configuration -->
>         <bean id="jmsResourceAdapter"
> class="org.apache.activemq.ra.ActiveMQResourceAdapter" depends-on="broker">
>                 <property name="serverUrl" value="vm://localhost"/>
>         </bean>
>         <bean id="jmsManagedConnectionFactory"
> class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory">
>                 <property name="resourceAdapter" ref="jmsResourceAdapter"/>
>         </bean>
>         <bean id="jmsConnectionFactory"
> class="org.springframework.jca.support.LocalConnectionFactoryBean">
>                 <property name="managedConnectionFactory"
> ref="jmsManagedConnectionFactory"/>
>                 <property name="connectionManager" ref="connectionManager"/>
>      </bean>
>
>         <!-- Jencks JCA Container configuration -->
>         <bean id="jencksJCAContainer" class="org.jencks.JCAContainer">
>                 <property name="bootstrapContext">
>                         <bean class="org.jencks.factory.BootstrapContextFactoryBean">
>                                 <property name="threadPoolSize" value="5"/>
>                         </bean>
>                 </property>
>                 <property name="resourceAdapter" ref="jmsResourceAdapter"/>
>         </bean>
>         <bean id="inboundConnector" class="org.jencks.JCAConnector">
>                 <property name="jcaContainer" ref="jencksJCAContainer" />
>                 <property name="activationSpec">
>                         <bean class="org.apache.activemq.ra.ActiveMQActivationSpec">
>                                 <property name="destination" value="messages.input"/>
>                                 <property name="destinationType" value="javax.jms.Queue"/>
>                         </bean>
>                 </property>
>                 <property name="transactionManager" ref="geronimo"/>
>                 <property name="ref" value="messageProcessor"/>
>         </bean>
>
>      <!-- Manager message router configuration -->
>      <bean id="messageProcessor" class="manager.broker.MessageProcessor">
>                 <property name="jmsTemplate">
>                         <bean class="org.springframework.jms.core.JmsTemplate">
>                                 <property name="connectionFactory" ref="jmsConnectionFactory"/>
>                         </bean>
>                 </property>
>         </bean>
>
> </beans>
>
> Need I change it anyway to get the best perfomance? Need I make some
> changes in java command line for starting up JVM? Need I consider my OS
> or hardware for setting params? My OS is Linux (kernel 2.6.16). My
> hardware is 1G RAM and 2 Xeon 3GHz with hyper-threading turned on. There
> are no any other applications will be run on this machine except spring
> context above.
>
> --
> Thanks,
> Eugene Prokopiev
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/