0
我正在構建在Jetty上運行war文件的Docker容器,並且我一直在交替進行一些設置以查看性能是否有所提高,但目前爲止尚未提供。每個容器已達到7 tps。MQ Listener性能
的設置
<bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="MQConnectionFactory" />
<property name="sessionCacheSize" value="10"/>
</bean>
<bean id="requestQueue" class="com.ibm.mq.jms.MQQueue">
<constructor-arg index="0" value="${queuemanager}"/>
<constructor-arg index="1" value="${incoming.queue}"/>
</bean>
<integration:poller id="poller" default="true" fixed-delay="1000" error-channel="errorChannel"/>
如何改進線程的數目處理在這裏?
另外,我的連接工廠細節如下所示
@Bean(name="DefaultJmsListenerContainerFactory")
public DefaultJmsListenerContainerFactory provideJmsListenerContainerFactory(PlatformTransactionManager transactionManager) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setTransactionManager(transactionManager);
factory.setConcurrency(jmsConcurrency);
factory.setCacheLevel(jmsCacheLevel);
factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
factory.setSessionTransacted(true);
return factory;
}
@Bean(name = "txManager")
public PlatformTransactionManager provideTransactionManager() {
return new JmsTransactionManager(connectionFactory());
}
@Bean(name = "JmsTemplate")
public JmsTemplate provideJmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory());
jmsTemplate.setReceiveTimeout(Long.parseLong(env.getRequiredProperty(RECEIVE_TIMEOUT)));
return jmsTemplate;
}
@Bean(name="MQConnectionFactory")
public ConnectionFactory connectionFactory() {
if (factory == null) {
factory = new MQXAConnectionFactory();
try {
factory.setHostName(env.getRequiredProperty(HOST));
factory.setPort(Integer.parseInt(env.getRequiredProperty(PORT)));
factory.setQueueManager(env.getRequiredProperty(QUEUE_MANAGER));
factory.setChannel(env.getRequiredProperty(CHANNEL));
factory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
} catch (JMSException e) {
throw new RuntimeException(e);
}
}
return factory;
}
的初始設置爲併發是「1-2」和我改變了到'10 -15' 。沒有影響性能。
jmsCache被設置爲3 (Consumer cache),但在那裏也沒有改變。
任何幫助,非常感謝。
乾杯 克里斯
你能告訴我們關於你的系統的其他一些事情嗎?你有多少個推杆?發送消息的速率是多少?你有多少個併發getter?是否有併發消息讓他們處理或者一個吸氣劑能跟上推杆?每個交易都要做什麼才能讓您全面瞭解系統的性能? –
在這個時候,推杆是由NFT團隊使用LoadRunner模擬的,具有100 tps。我有兩個容器運行的實例,這意味着我們達到了15個tps。我想通過在DefaultJmsListenerContainerFactory中將併發性設置爲'10 -15',這實際上允許多個線程並行處理。應用程序的另一部分將json消息從1格式轉換爲另一部分,並將HTTP請求發送到在DB中執行插入操作的Api。 – krisrr3
這也是我對setConcurrency的理解。你看到你的隊列中有多少個getter?試試MQSC命令'DISPLAY QSTATUS(q-name)IPPROCS' –