Mic*_*ael 13 django connection-pooling pgpool pgbouncer django-1.7
django应用程序(Django-PostgresPool,djorm-ext-pool,django-db-pool)和PG Bouncer或PG Pool之间有什么区别?
应用程序是否使用最后两个包中的一个?
在本文中,作者说有一个以django 1.6开头的补丁.这是否意味着我们不再需要使用任何这些解决方案,既不是应用程序,也不是PG Bouncer或PG Pool包?
c2h*_*5oh 13
与MySQL连接相比,Postgres数据库连接是昂贵的(资源).Django池应用程序将打开许多连接并保持打开状态.
PG Bouncer和PG Pool将打开更少的与Postgres的连接,同时保持大量本地连接(应用于PG Bouncer/PG Pool)并重复使用它们.
为了获得最佳性能,您需要两者:从Django到PG Pool/PG Bouncer的持久连接.
在我们的案例中,切换持久连接将AWS的平均响应时间缩短了10ms(超过20%).
@c2h5oh 上面有一个很好的答案。我想添加关于 Django 1.6 更新的一件事。我相信您和文章作者所指的是CONN_MAX_AGE设置。
我发现这个问题是因为我自己也在寻找同样的东西,所以我不确定以下内容,但请允许我假设:
您应该能够同时使用所有三个工具:
我知道#2 和#3 的效果很好,正如Heroku 的关于连接池的文章所证明的那样,但我不确定#1 和#2 是如何交互的。
我猜一起使用#1 和#2 的节省是相当微薄的。Django-postgrespool 本质上旨在节省连接时间,但您的请求仍然必须连接到这些连接,因此 CONN_MAX_AGE 将为您节省非常小的连接时间。此外,如果您使用的是 Heroku,则 CONN_MAX_AGE 可能会干扰自动 dyno 重新启动(只是猜测)。
请注意,如果您使用的是 Gunicorn 之类的 Web 服务器,则可能需要使您的工作人员同步以防止连接泄漏。
| 归档时间: |
|
| 查看次数: |
5146 次 |
| 最近记录: |