在我的组织中,PostgreSQL数据库是根据策略创建的,具有20个连接限制。当多个应用程序在使用连接池时,这往往会很难交互,因为许多应用程序打开了它们的全套连接并使它们空闲。
只要有多个应用程序与数据库联系,我们就会出现连接,就像您期望的那样。
汇集行为在这里是一件新事物;到目前为止,我们通过基于Web的数据库网关(?!)序列化对它们的访问或者根本不汇集任何内容来管理池化连接。因此,我不得不一遍又一遍地解释(从字面上看,一个人在整个项目过程中的5张故障单)如何汇集。
我想要的是以下之一:
增加与数据库的可用连接数量以便与游戏池保持良好关系的可靠,无可争议的理由。
如果是这样,什么是安全限制?有没有理由将限制保持在20?
我错了,我们应该减少池的大小或完全消除它们。
对于它的价值,以下是游戏中的组件。如果配置其中一个是相关的,请权衡:
DB:PostgreSQL 8.2。不,我们不会将其升级为其中的一部分。
Web服务器:Python 2.7,Pylons 1.0,SQLAlchemy 0.6.5,psycopg2
Task runner:Python 2.7,celery 2.1.4,SQLAlchemy 0.6.5,psycopg2
答案 0 :(得分:2)
我认为每个并发活动需要一个连接是合理的,并且假设并发HTTP请求被并发执行是合理的。
现在,您要处理的并发HTTP请求数应随着a)服务器上的负载而扩展,以及b)您可用的CPU数量。如果一切顺利,每个请求都将占用CPU时间(在Web服务器,应用程序服务器或数据库服务器中),这意味着您无法同时处理比CPU更多的请求。实际上,并非一切顺利:某些请求会在某个时刻等待IO,而不会占用任何CPU。因此,与CPU相比,可以同时处理更多的请求。
尽管如此,假设您有4个CPU,允许20个并发请求已经相当多的负载。我宁愿限制HTTP请求,也不愿增加可以同时处理的请求数。如果您发现单个请求需要多个连接,则应用程序中存在缺陷。
因此,我的建议是应对限制,并确保没有太多空闲连接(与您实际同时处理的请求数相比)。