Java 连接池-它的开销有多大?

Java 连接池-它的开销有多大?,java,jdbc,jakarta-ee,websphere,connection-pooling,Java,Jdbc,Jakarta Ee,Websphere,Connection Pooling,我正在Webpshere应用服务器6.1中运行一个webapp。这个webapp有一个类似规则的引擎,其中每个规则都从websphere数据源池获得自己的连接。因此,我看到当一个用例运行时,对于100条输入记录,从池中获得大约400-800个连接并释放回池中。我有一种感觉,如果这个引擎投入生产,它可能需要太多的时间来完成处理 频繁地从池中获取连接是一种不好的做法吗?从池中获取连接需要多少开销?我的猜测是,所涉及的成本应该是最低的,因为池只是一个资源缓存。如果我错了,请纠正我。游泳池似乎不是你的问

我正在Webpshere应用服务器6.1中运行一个webapp。这个webapp有一个类似规则的引擎,其中每个规则都从websphere数据源池获得自己的连接。因此,我看到当一个用例运行时,对于100条输入记录,从池中获得大约400-800个连接并释放回池中。我有一种感觉,如果这个引擎投入生产,它可能需要太多的时间来完成处理


频繁地从池中获取连接是一种不好的做法吗?从池中获取连接需要多少开销?我的猜测是,所涉及的成本应该是最低的,因为池只是一个资源缓存。如果我错了,请纠正我。

游泳池似乎不是你的问题。真正的问题在于,您的“规则引擎”在完成整个计算之前不会释放回池的连接。这台发动机的伸缩性似乎不好。如果数据库连接的数量在某种程度上取决于正在处理的记录的数量,那么有些事情几乎总是非常错误的

如果您设法让引擎尽快释放连接,则可能只需要几个连接,而不是几百个。如果做不到这一点,您可以使用一个连接包装器,在规则引擎每次请求时重新使用相同的连接,这在某种程度上否定了拥有连接池的好处


更不用说它引入了许多多线程和事务隔离问题,如果连接是只读的,它可能是一个选项。

池似乎不是您的问题。真正的问题在于,您的“规则引擎”在完成整个计算之前不会释放回池的连接。这台发动机的伸缩性似乎不好。如果数据库连接的数量在某种程度上取决于正在处理的记录的数量,那么有些事情几乎总是非常错误的

如果您设法让引擎尽快释放连接,则可能只需要几个连接,而不是几百个。如果做不到这一点,您可以使用一个连接包装器,在规则引擎每次请求时重新使用相同的连接,这在某种程度上否定了拥有连接池的好处


更不用说它引入了许多多线程和事务隔离问题,如果连接是只读的,它可能是一个选项。

连接池可以让您的连接保持预期的活动状态,如果另一个用户将就绪连接连接连接到数据库,则数据库将被移交,而不必再次打开连接

这实际上是一个好主意,因为打开连接不仅仅是一次性的事情。有很多次访问服务器(身份验证、检索、状态等),因此如果您的网站上有一个连接池,您可以更快地为客户服务


除非你的网站没有被人访问,否则你不能不让连接池为你工作。

如果另一个用户将准备好的连接连接到数据库,并且数据库不必再次打开连接,那么连接池可以让你的连接保持预期的活动状态

这实际上是一个好主意,因为打开连接不仅仅是一次性的事情。有很多次访问服务器(身份验证、检索、状态等),因此如果您的网站上有一个连接池,您可以更快地为客户服务

除非您的网站没有人访问,否则您无法负担不使用连接池的费用。

连接池就是连接重用

如果您在不需要连接的时候仍保持连接,则会阻止该连接在其他地方重复使用。如果有很多线程执行此操作,那么还必须使用更大的连接池来运行,以防止池耗尽。更多的连接需要更长的时间来创建和建立,它们需要更多的资源来维护;随着连接的老化,将有更多的重新连接,并且您的数据库服务器也将受到更多连接的影响

换句话说:您希望在不耗尽资源的情况下使用尽可能小的池运行。做到这一点的方法是尽可能少地保持联系

我自己也实现了一个JDBC连接池,尽管很多池实现可能会更快,但您可能不会注意到,因为池中的任何空闲时间都很可能比在数据库上执行查询所需的时间要短

简言之:当您返回连接时,连接池非常喜欢它。或者他们无论如何都应该这样做。

连接池就是关于连接重用的

如果您在不需要连接的时候仍保持连接,则会阻止该连接在其他地方重复使用。如果有很多线程执行此操作,那么还必须使用更大的连接池来运行,以防止池耗尽。更多的连接需要更长的时间来创建和建立,它们需要更多的资源来维护;随着连接的老化,将有更多的重新连接,并且您的数据库服务器也将受到更多连接的影响

换句话说:您希望在不耗尽资源的情况下使用尽可能小的池运行。做到这一点的方法是尽可能少地保持联系

我自己也实现了一个JDBC连接池,尽管很多池实现可能会更快,但您可能不会注意到,因为池中的任何空闲时间都很可能比在数据库上执行查询所需的时间要短

简言之:当您返回连接时,连接池非常喜欢它。O