【发布时间】:2020-02-12 10:57:00
【问题描述】:
通常,在 DBMS 的连接池中,有数百个连接是可以接受的,有时更可取。
看网上的例子,我总是看到只有几个连接的连接池和大量与连接关联的会话。
这是因为到 ActiveMQ 的连接有点昂贵吗?
【问题讨论】:
标签: activemq connection-pooling
通常,在 DBMS 的连接池中,有数百个连接是可以接受的,有时更可取。
看网上的例子,我总是看到只有几个连接的连接池和大量与连接关联的会话。
这是因为到 ActiveMQ 的连接有点昂贵吗?
【问题讨论】:
标签: activemq connection-pooling
数据库和 JMS 连接通常被认为是“昂贵的”,通常应该被池化。
在池用例中,池中的连接数实际上是由您的性能要求、硬件容量等定义的。它通常通过基准测试和调整来优化。性能和资源利用率之间几乎总是需要权衡取舍,因此找到合适的平衡点是您的工作。即使是针对池大小的一般性建议也很难,因为用例可能差异很大。
在非池用例中,值得注意的是,单个 JMS 连接可以同时为多个会话提供服务(尽管会话本身不能同时使用)。与 JMS 连接相比,创建 JMS 会话的成本要低得多。因此,在非池化用例中,将 JMS 连接数减少到尽可能低并利用多个会话通常是有意义的。
除了一些连接设置之外,所有实质性的 JMS 客户端工作都是通过会话完成的。 JDBC 连接没有这样的“会话”概念。大部分工作直接在连接对象上完成。因此,我不确定这里的比较是否真的有效。
【讨论】:
start()。 JMS 会话比连接便宜得多,因此从池中获取连接并每次都创建一个会话应该不是问题。您是否最终确定 JMS 会话创建是您应用程序的瓶颈?