【问题标题】:Solution to many ajax/php requests on postgresql databasepostgresql 数据库上的许多 ajax/php 请求的解决方案
【发布时间】:2015-04-24 09:03:10
【问题描述】:

我目前正在使用 AJAX 和 PHP 向 postgreSQL 数据库发送更新。

假设我有 1000 个用户每秒都向 php 脚本发送一个 ajax 发布请求。说php脚本打开一个连接,每次运行都执行两条SQL更新命令,然后关闭连接。

这将是每秒 1000 个连接 - 我猜这对我来说不会很好。

如果不是,我应该如何处理?我读过 node.js 是一个很好的解决方案 - 如果有的话,是否有任何好的指南来处理使用 javascript 从网页更新 postgreSQL?

我在 postgreSQL 数据库中已经有数据(一些 json 和其他一些),它需要保留在那里,所以理想情况下,我可以只更改 javascript 和数据库之间的握手方式,而将其余部分留给一样。

作为一个附带问题:如果这是我唯一的瓶颈,我应该期望每秒能够处理多少个连接?如果有超过最大 150 个连接,它只是将连接排队还是做一些令人讨厌的事情,比如发布一条消息说“最大连接命中”并且不允许页面加载?

【问题讨论】:

    标签: javascript php ajax node.js postgresql


    【解决方案1】:

    连接池或“连接代理”。 Try a search结合

    Postgres 项目页面上有一个当前的调查:

    What Connection Proxy do you use for PostgreSQL?

    是最受欢迎的 ATM。
    我会从pgBouncer at the Postgres Wiki开始。

    当然,保持打开和重复使用的同一连接仅适用于同一会话用户。不过,您可以使用SET role 在同一连接中切换上下文:

    【讨论】:

    • 嗯,好吧。根据 15 分钟的搜索,很难找到关于这些东西的可读信息,但我会继续寻找。我有一个担忧:听起来你建议的保持连接打开的方法似乎会严重限制一次可以使用该应用程序的用户数量 - 如果 150 个用户使用它一次并且他们的连接保持打开状态,这不会比打开它几毫秒然后关闭它效率低吗?
    • 我相信你的解决方案比我现在做的要好得多,我只是想知道为什么它很好!
    • @maxhud:连接池很聪明,并且有广泛的微调选项。与打开和关闭 150 个连接不同,您将拥有 3 个(或其他)始终保持打开状态的连接以及用于峰值负载的最大连接(如 25 个)。这是一个功能。这样一来,一个应用程序中的错误就不能吃掉你所有的连接并饿死其余的。我会从pgBouncer at the Postgres Wiki page开始。
    • 太棒了。我误解了它是如何工作的。感谢您的提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2010-09-22
    • 2016-05-23
    • 1970-01-01
    • 2011-09-27
    • 2020-04-07
    • 1970-01-01
    相关资源
    最近更新 更多