【问题标题】:Persistent database connections in fastcgifastcgi 中的持久数据库连接
【发布时间】:2010-09-21 18:45:23
【问题描述】:

我正在将应用程序从 php 移植到 fastcgi (c)。我的主机运行 apache。

由于 fastcgi 应用程序将在循环中运行,我可以打开一个 mysql 连接,并让它对所有传入请求保持打开状态。这是推荐的吗?

我认为我已经阅读了相同数量的意见,说连接比请求更昂贵,它应该是持久的,另一方面,人们声称打开的连接是资源消耗,应该关闭每次。

在我的上下文中,哪一个是正确的?

【问题讨论】:

    标签: php mysql fastcgi


    【解决方案1】:

    我不想说出如此明显的答案,但是……您是否尝试过两种方法并进行了比较?将 connect() 更改为 pconnect() 并尝试使用这两种方法非常容易。做一些分析,尤其是在负载下,看看什么最适合你的硬件和软件组合。

    在高流量站点上,有时您无法让数据库接受足够的连接以允许持久连接工作,但一般来说,持久连接往往更有效。

    【讨论】:

      【解决方案2】:

      我会说,如果您始终有至少 10-20 人使用您的网站,那么持久连接效果最好。没有什么是矫枉过正

      【讨论】:

        【解决方案3】:

        这在很大程度上取决于您的设置。 MySql 建立连接的速度是出了名的快;你可以说它是为此而设计的。如果数据库与 Web 服务器在同一台机器上,那么它真的很快。您必须权衡这与保持连接活动所增加的复杂性。如果每个脚本都创建一个新连接,则行为不端的脚本无法关闭其他脚本。还需要考虑每个连接状态等问题。因此,根据经验,我会说除非您已将连接确定为性能瓶颈,否则不要尝试对其进行优化。

        【讨论】:

        • 永远不要说不优化!优化我的连接我能够在我的网站上节省 5 毫秒。在不使用 CDN 且仅运行 2 台服务器的情况下,我能够让我非常复杂的电子商务网站的加载时间始终保持在 32 毫秒。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 2015-06-09
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多