简单地增加连接池有什么危险?

时间:2010-08-25 22:32:57

标签: performance connection connection-pooling threadpool

我正在对Apa​​che服务器进行一些性能测试并得到可怕的消息“上下文池已经用尽了!Dun Dun Dun。” (引人注目的重点)

开发人员浮动的当前提议是简单地增加连接池大小。虽然这可能是有效的,但是我脑子里的一些小小的叮当声说:“好吧,这太简单了 - 肯定会有这样的缺点”,我向社会询问其中一些可能是什么。

我希望尽可能保持通用性,以便它对大多数人来说最有用。

1 个答案:

答案 0 :(得分:0)

警告:怀旧之后。

许多年前,我在大型机环境中工作过。我的工作是运行临时SQL报告来评估圣诞节销售活动的有效性。 “在过去的Z周内,X线对Y线的影响如何,与去年同期相比”......并且类似。

令人兴奋的是:根据早上购买部门提出的问题,直接针对实时数据库进行临时查询,下午做出营销决策。不允许SQL错误,没有测试,没有开发环境,第一次是正确的,或者没有。

我离开去吃午饭,我是个傻瓜,制作了一个多表连接,虽然经过了30分钟的查询,却可以获得理想的结果,但知道没有采取锁定来阻止事务排序系统保存新订单。这是12月中旬,在圣诞节订购季节的高峰期。

我回来了,公司陷入混乱。整个订购系统都停机了,一切都超时了,没有一个新的原因。

除了CICS无法获得连接。游泳池用尽了,所以新的交易失败了。

这是我的报告。耗费了大量的CPU。它跑了很长时间。其他所有东西都运行了一点点。所以连接池没有连接,其他一切都死了一段时间。

我的查询已完成。它给出了正确的结果。购买部门很高兴,因为他们可以在第二天做出正确的决定。订单开始再次保存,猜猜是什么......

我感到非常恐惧和尴尬,但令人惊讶的是,我暂时是当地的英雄,因为及时提供了关键的报道。半小时的危机在当时是一场灾难,但一天之后,只是一段记忆。

如果这里有道德,那就是:

这类问题没有一个正确答案。

如果可以的话,找出你的连接不足的原因,因为它可能表明一些严重的事情。

但它可能没有,明天可能会有不同的问题。