代码之家  ›  专栏  ›  技术社区  ›  jW.

使用php的高性能站点中的memcache

  •  4
  • jW.  · 技术社区  · 16 年前

    我一直在努力优化一个WebService,它要求返回速度有点快(不到1秒),并且需要保持高负载的请求(大于1000/秒)。我们使用memcached作为“内存”中存储对象的方法。似乎我们从memcache中获取了大量超时错误。

    [2009年7月23日星期四22:59:42][error][client 123.456.789.10]php警告:memcache::connect()[memcache.connect]:无法连接到127.0.0.1:11211,连接超时(110)

    所以,关于这些问题。

    1. 是否可以很好地使用memcache将创建耗时的对象存储在内存中?对于这些物体,APC会是一个更好的位置吗?读取次数和

    2. 在设置memcache以更高效地工作时,我是否忽略了一些常见的陷阱?

    谢谢你的帮助,我对使用memcache有点陌生,我想我遗漏了一些东西。

    1 回复  |  直到 16 年前
        1
  •  4
  •   Pascal MARTIN    16 年前

    回答你的第一点:

    • memcached的强大之处在于它允许创建一个缓存服务器集群:它不打算在单个服务器上使用(如果可以这样使用的话)
      • 理论上你有很多服务器,每个服务器都有一些你没有用的空闲RAM
      • 要使用此RAM,您需要在这些服务器上安装memcached,并将其配置为使用未使用的RAM数量。
      • 如果一台机器停机,它会自动停止使用它,并将负载平衡数据放在其他机器上。
      • memcached(对某些人来说)的缺点是它是基于网络的(即使只在一台机器上使用);这意味着“仅本地”的速度要慢一些。
    • APC只在一台机器上工作:将您只需要的数据存储在一台服务器上,或者如果您只有一台服务器,那么它是非常好的(用作缓存机制);并且没有更多的数据可以存储在RAM中。
      • 主要的缺点是它绝对不能缩放:它被认为是针对一台机器的;如果你有10个,你将不得不在每台机器上有10次相同的数据。
      • 据说APC获取数据的速度是本地和非网络数据的5倍。

    关于apc的一件事是:如果你使用它来实现它的操作码缓存能力(你应该这样做),确保你配置它有足够的RAM来进行操作码+缓存(这样它就不会耗尽内存来进行操作码缓存,这很糟糕)。

    如果您需要有关memcached的更多(特定的)帮助,并且在这里没有得到太多帮助,那么这里有一个邮件列表,它有时非常活跃;也许在那里尝试是有用的。

    推荐文章