【问题标题】:(PHP)choose memcache::connect or memcache::pconnect?(PHP) 选择 memcache::connect 还是 memcache::pconnect?
【发布时间】:2010-10-13 04:51:07
【问题描述】:

我正在使用 php::memcache 模块连接本地 memcached 服务器 (@127.0.0.1),但我不知道应该使用哪个, memcache::connect() 还是 memcache::pconnect ? memcache::pconnect 会不会消耗服务器很多资源?

非常感谢您的回答!

【问题讨论】:

    标签: php memcached


    【解决方案1】:

    Memcached 使用 TCP 连接(握手是 3 个额外的数据包,关闭通常是 4 个数据包)并且不需要任何身份验证。因此,使用持久连接的唯一好处是您不需要发送那额外的 7 个数据包,也不必担心在几秒钟内有剩余的TIME-WAIT 端口。

    可悲的是,牺牲这些资源的负面影响远远大于次要的好处。所以我建议不要在 memcached 中使用持久连接。

    【讨论】:

    • 谢谢,我会用 memcache::connect() 代替 :)
    • 没问题!很高兴我能帮助你。请选择一个答案作为回答您问题的答案。
    • 您所说的“缺点”到底是什么?我很好奇,因为我一直在寻找同样问题的可靠答案。
    • 我知道的唯一缺点是,如果您有一个使用相同 memcached 的多台服务器场,您可能会遇到连接限制。特别是如果您的站点有问题并且您正在使用 memcached 进行会话。每个请求都需要一个连接,因此并发运行的请求越多,您需要的连接就越多。 1024 是默认限制。
    • 我认为每个 api/动态页面加载至少需要一个 memcache 连接是一个安全的设计考虑,不是吗?
    【解决方案2】:

    pconnect 代表持久连接。这意味着客户端(在您的情况下是脚本)将不断打开到您的服务器的连接,这可能不是资源问题 - 更多的是缺乏可用的连接。

    除非您知道需要使用持久连接,否则您可能需要标准的 connect

    【讨论】:

    • 我正在使用 memcache::addServer( string $host [, int $port [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback]]]]]]])第三个参数是持久的,默认值为TRUE。但是 memcache::connect() 不使用持久化..
    【解决方案3】:

    据我所知,在连接到 MySQL 时管理持久连接和常规连接的相同 rules 也适用于 memcached。结果是,在这两种情况下,您可能都不应该使用持久连接。

    【讨论】:

    • memcache 连接比 mysql 连接轻得多——因此保持空闲连接打开相对便宜。 memcache 连接也是无状态的(对吧?)。所以至少有两个反对 mysqlpconnect 的论点不适用于 memcached。
    【解决方案4】:

    “使用”TCP 端口。

    【讨论】:

      【解决方案5】:

      在我正在开发的应用程序中,我使用 pconnect,因为它使用连接池并且从硬件的角度来看 - 一台服务器与 memcache 保持一个连接。我不知道它是如何工作的,但我认为 memcached 足够聪明,可以跟踪 memcached 客户端机器的 IP。

      我用memcached玩了很久,发现使用memcache::getStatus显示使用pconnect时连接数没有增加。

      您可以使用显示 memcached 统计信息的调试页面并尝试调整 pconnect 或 connect 并查看发生了什么。

      【讨论】:

        【解决方案6】:

        一个缺点是,如果一个或所有持久连接的 memcached 守护进程消失,PHP 不会收到明显的错误或警告。这是一个相当大的缺点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-10
          • 1970-01-01
          • 2011-05-21
          • 1970-01-01
          • 1970-01-01
          • 2011-06-27
          • 2017-05-24
          相关资源
          最近更新 更多