问题标签 [pooling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
889 浏览

java - Spring ObjectPooling & 线程阻塞

CommonsPoolTargetSource为 bean 定义了一个 Spring。我试图了解池的工作原理,以及何时将对象返回到池中。

具体来说,如果我有一个工作人员,它接受一个池化对象并在其上调用两个方法,如下所示:

从我在运行的测试中可以看到,pooledFoo它实际上不是 的实例Foo,而是 Pool 提供的代理。上面的流程是:

  • 调用 doStepA()foo从池中检索一个值(如果线程不可用,则阻塞线程),
  • doStepA 在 pooledFoo 上执行
  • 当 doStepA 完成时,pooledFoo实例返回到池中
  • 控制返回到doWork方法,方法继续

如果这是正确的(如果不是,请告诉我),假设在调用pooledFoo时从池中返回的值与返回的实例不同是否公平?doStepB()doStepA()

0 投票
1 回答
1472 浏览

c# - ADO.NET 连接池如何与 .ASMX Web 服务一起使用?

我创建了一个老式的 .ASMX Web 服务,想知道内置的 ADO.NET 连接池如何与它一起工作。

Web 服务没有使用单例模式,因此每次请求都会重新实例化它。我的问题是,每次服务请求后连接会从池中删除,还是跨请求保留在池中?我的服务被非常频繁地调用,但如果可以避免的话,我不想每次都设置和拆除连接。

我已经读到该池是为 AppDomain 维护的,但我不确定每个请求是否会生成一个新的 AppDomain。

我也很好奇在这种情况下设置 Min Pool Size(设置为 0 以外的小数字)是否有益。

有人知道吗?

0 投票
1 回答
4215 浏览

sql - SSIS foreach 循环中的 SQL 任务——达到最大池大小错误

我在 SSIS 中使用 foreach 循环来遍历文件夹的内容,为每个文件执行 SQL 任务。

当我这样做时,它在循环的前约 300 次工作正常,然后它挂起并说:

我想这意味着旧任务关闭得太慢了?真正的问题是,如果我在失败的任务之前添加另一个 SQL 任务(将空白字符串插入 tmp 表,使用相同的连接) ,那么整个事情就会正常工作。不过,这不是一个好的解决方案,我希望弄清楚是否有已知的解决方法,或者我是否在做一些非常愚蠢的事情。

0 投票
2 回答
113 浏览

.net - 谁从池中获利更多?托管/非托管?

有两个类似的应用程序:一个是托管的,另一个是非托管的。两者都对大型对象使用了重分配模式。即他们在(长期运行的)循环中请求了很多这些对象,并且在使用后立即释放这些对象。托管应用程序使用立即调用的 IDisposable()。非托管对象正在使用析构函数。

一些但不是所有的对象可以重复使用。因此,考虑使用池以提高执行速度并最大限度地降低内存碎片的风险。

您希望哪个应用程序从池中获利更多,为什么?

@Update:这是关于一个数学库。因此,那些大对象将是值类型的数组。大多数情况下,对于 LOH 来说足够大。我很肯定,池化会大大提高托管方的性能。存在许多库 - 用于托管/非托管环境。我所知道的他们中没有一个人真正做到了这种汇集。我想知道为什么?

0 投票
1 回答
6052 浏览

jsp - 如何在 Tomcat 6 和 MySQL 中使用连接池?

我正在构建一个 Web 应用程序,我想使用“连接池”,因为它带来了好处。我阅读了一些教程,但我真的不明白我需要做什么。

如果有人能给我一个北方,我很感激。

我正在使用 JSP/Servlet、MySQL、Tomcat 6 和 Netbeans 6.9.1。

最好的问候,瓦尔特·恩里克。

0 投票
5 回答
46022 浏览

hibernate - 数据库连接用完了!

我正在使用 c3p0 作为连接池运行 Spring/Hibernate 连接到 MySQL 设置。由于某些奇怪的原因,当系统处于负载状态时(当然),它会耗尽连接。

在我们开始达到新的流量水平(超过一百个并发用户)之前,该站点非常稳定。那时数据库会崩溃(与 CPU 挂钩)。我的第一个动作是在应用程序中通过广泛的缓存和查询优化等来提高性能。

现在它将间歇性地用完连接。它甚至似乎并不依赖于负载。更多的时间让我认为这是一个泄漏,但对于我的生活,我无法弄清楚它会来自哪里。

这是我的配置:

我正在运行应该关闭连接的 OpenSessionInViewInterceptor:

我还在为 @Transactional 使用 spring 注释,因为我在非 Web 前端代码中重用了我的服务。

这里实际上只有两个选项,完成后不会释放连接。或者它正在和数据库聊天,就像它试图穿上她的裤子一样。如果有人有任何想法,我将不胜感激 thx

跟进:最后事实证明,由于使用 OpenSessionInViewInterceptor,我正在泄漏连接。我将spring security作为过滤器运行,因此它可以连接到数据库并且永​​远不会关闭它们。解决方法是将 OpenSessionInViewInterceptor 移动到 OpenSessionInViewFilter。

0 投票
1 回答
134 浏览

database - 了解数据池属性

我想知道 maxPoolSize 是做什么用的?minPoolSize 是做什么用的?

我如何知道要为我的数据库使用哪个属性值?

已编辑

我正在使用 Oracle 10g,在 Windows 操作系统上连接 Hibernate 和 bitronix。

0 投票
2 回答
548 浏览

java - 从 JNDI 连接池检索的数据库连接设置

我在 Websphere 服务器上托管了一个数据源,我想通过我的应用程序客户端使用该数据源。

从 JNDI 数据源检索数据库连接后,我将连接的提交设置更改为 false。之后,我将使用此连接,并在完成任务后关闭连接。

如果我忘记在关闭之前更改连接的提交设置会发生什么(我的意思是将连接返回到池中)。如果任何其他客户端访问此数据源并获得相同的连接,提交设置是否仍然存在,或者服务器是否会重置这些连接设置。

0 投票
1 回答
767 浏览

spring - Oracle Streams AQ。session.getQueue 抛出 AQOracleSQLException:用尽的结果集

在多线程/多应用程序环境中使用 Oracle Streams AQ,我AQOracleSQLException仅在一个线程中运行约 10 分钟后收到:Exhausted Resultsset。

通过AQOracleSessionSpring 汇集如下:

使用工厂方法createAQSession(在 Scala 中):

异常是从 this 块的最后一行抛出的:

显然,我不是直接处理ResultSetused within AQOracleSession

正在使用与Connection关联的Session,但这直到稍后在相同的方法中,所以这里不能出错:

池配置是否可能不正确并且同一会话上有一些并发操作?其他日志中没有任何异常。

0 投票
2 回答
502 浏览

c# - 什么可能导致性能提升?GC 中的时间,池化

我们的多线程应用程序执行了一个冗长的计算循环。平均而言,完成一个完整的周期大约需要 29 秒。在此期间, GC 中的 .NET 性能计数器% time测量为 8.5%。它全部由 Gen 2 系列制成。

为了提高性能,我们为我们的大对象实现了一个池。我们实现了 100% 的重用率。整个周期现在平均只需 20 秒。“% time in GC”显示在 0.3...0.5% 之间。现在 GC 只进行 Gen 0 收集。

让我们假设,池化被有效地实现并且忽略了执行所需的额外时间。比我们获得了大约 33% 的性能提升。这与之前 8.5% 的 GC 值有何关系?

我有一些假设,希望能得到确认、调整和修正:

1)“GC中的时间”(如果我没看错的话)确实测量了2个时间跨度的关系:

  • 2个GC周期之间的时间和
  • 上次完整 GC 循环所用的时间,该值包含在第一个跨度中。

第二个时间跨度不包括的是为阻塞 GC 停止和重新启动工作线程的开销。但这怎么可能占总执行时间的 20%?

2)频繁阻塞GC线程可能会引入线程之间的争用?这只是一个想法。我无法通过 VS 并发分析器确认这一点。

3)与此相反,可以确认非池化应用程序的页面未命中数(性能计数器:内存 -> 页面错误/秒)显着高于具有低 GC 率的应用程序(每秒 25.000 次) (每秒 200 个)。我可以想象,这也会带来很大的进步。但是什么可以解释这种行为呢?是不是因为频繁的分配导致使用虚拟内存地址空间中更大的区域,因此更难保留到物理内存中?又如何衡量以确认是这里的原因呢?

顺便说一句:GCSettings.IsServerGC = false,.NET 4.0,64 位,在 Win7、4GB、Intel i5 上运行。(很抱歉这个大问题.. ;)