目前,我收到的应用程序1-2 req/秒的流量非常低,这些流量被发送到JMS队列。然而,在artemis.log中,我看到了以下WARN消息。
2021-06-23 10:51:49,433 WARN [org.apache.activemq.artemis.core.server] AMQ222061: Client connection failed, clearing up resources for session d798a4d3-d3f7-11eb-86d7-005056b536f0
2021-06-23 10:51:49,434 WARN [org.apache.activemq.artemis.core.server] AMQ222107: Cleared up resources for session d798a4d3-d3f7-11eb-86d7-005056b536f0
2021-06-23 10:51:49,434 WARN [org.apache.activemq.artemis.core.server] AMQ222061: Client connection failed, clearing up resources for session d798cbe4-d3f7-11eb-86d7-005056b536f0
2021-06-23 10:51:49,435 WARN [org.apache.activemq.artemis.core.server] AMQ222107: Cleared up resources for session d798cbe4-d3f7-11eb-86d7-005056b536f0Artemis日志由NFS支持,所有消息都被持久化。我使用Spring的JmsTemplate和一个JmsPoolConnectionFactory。
@Bean
public ConnectionFactory jmsConnectionFactoryOnline() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl,username,password);
connectionFactory.setCallTimeout(3000);
return connectionFactory;
}@Bean
@Primary
public JmsPoolConnectionFactory pooledConnectionFactory() {
JmsPoolConnectionFactory poolingFactory = new JmsPoolConnectionFactory();
poolingFactory.setConnectionFactory(jmsConnectionFactoryOnline());
poolingFactory.setMaxConnections(8);
poolingFactory.setMaxSessionsPerConnection(20);
poolingFactory.setConnectionIdleTimeout(0);
return poolingFactory;
}知道为什么会有这么多断线(每15分钟重复一次),以及如何调试?
在客户端级别,我会收到以下警告,但由于代理已经启动并接受其他消息,所以3秒似乎很长时间:
23-06-2021 09:33:15 [Thread-24 (ActiveMQ-client-global-threads)] [WARN ] org.apache.activemq.artemis.core.client - AMQ212037: Connection failure to XXXXXX:61616 has been detected: AMQ219014: Timed out after waiting 3,000 ms for response when sending packet 71 [code=CONNECTION_TIMEDOUT]编辑
我每隔3秒就会抛出一个线程。检查这里以获得相关信息。
监视推到队列延迟,我可以清楚地看到,对于1req/秒,我有一个峰值延迟,而对于20个req/秒,推到队列延迟似乎是正常的,如下图所示。
另外,从tcpdump中,我可以看到客户机和代理之间存在暂停。他们之间似乎没有交通往来。因此,一旦callTimeout周期过了,客户端就会关闭连接。
发布于 2021-06-23 15:46:49
不可能知道为什么您所提供的信息会有如此多的中断,但是下面是一些调试的想法:
org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl打开跟踪日志记录。有关如何配置的详细信息,请参阅ActiveMQ Artemis 文档。这将让您看到来自客户端的传入PING数据包,或者没有它们。当代理在配置的连接TTL中没有接收到pings时,它将关闭客户端的连接。https://stackoverflow.com/questions/68096440
复制相似问题