反复排查,确定了故障。
当应用全部启动后,在mq服务器上会看到 诸如TCP 192.168.10.204:61616 192.168.8.92:62858 ESTABLISHED 1516,这样的tcp连接一共10个,每当日志中出现一个警告后,netstat后就会查到多出一条tcp连接,当出现个几千警告后,mq服务器上保持了太多无用tcp连接,于是就挂掉了。
我看了连接字符串,很普通,tcp://xxxx?jms.useAsyncSend=true
那是不是出错的连接没有关闭呢?也不是,比如上面从日志复制出来的错误信息是62859端口通信失败,netstat后并没有这个端口的连接。
现在看起来,可能是出错之后,生产者自动创建了一个tcp连接去弥补?但这个连接从来没有被复用或者关闭,除非关掉进程。