使用PHP在高性能站点中使用Memcache

时间:2009-07-24 17:56:30

标签: php memcached

我一直在尝试优化需要快速返回(少于1秒)的Web服务,并且需要维持高负载的请求(大于1000 /秒)。我们使用memcached作为一种在内存中存储对象的方法。我们似乎从memcache中获得了大量的超时错误。

[2009年7月23日22:59:42] [错误] [客户端123.456.789.10] PHP警告:Memcache :: connect()[memcache.connect]:无法连接到127.0.0.1:11211,连接超时(110)

所以,关于问题。

  1. 是否可以很好地利用内存缓存来存储内存中耗时的内容? APC会成为这些物体的更好位置吗?读数和

  2. 在设置memcache以提高工作效率时,我是否会忽略常见的陷阱?

  3. 感谢您的帮助,我对使用memcache感到有些新意,我觉得我有些遗漏。

1 个答案:

答案 0 :(得分:4)

回答你的第一点:

  • memcached的强大之处在于它允许创建一个缓存服务器集群:它不适合在单个服务器上使用(事件你可以这样使用它)
    • 理论上你有很多服务器,每个服务器都有一些你没有用的空闲内存
    • 要使用此RAM,请在这些服务器上安装memcached,并将其配置为使用未使用的RAM量
    • 如果一台机器关闭,它会自动停止使用它,并将数据的负载平衡放在其他机器上
    • memcached(对某些人来说)的缺点是它是基于网络的(即使你只在一台机器上使用它);这意味着“仅限本地”
    • 有点慢
  • APC只能在一台机器上运行:它很棒(用作缓存机制)来存储您在一台服务器上只需要的数据,或者只有一台服务器;并且没有更多数据可以存储在RAM中。
    • 主要的缺点是它绝对没有规模:它被认为是一台机器;如果你有10个,你必须拥有10次相同的数据,每台机器一次。
    • 据说APC获取数据的速度提高了大约5倍,因为它是本地的,非基于网络的。

关于APC的一件事:如果您使用它的操作码缓存能力(您应该),请确保将其配置为具有足够的操作码+缓存RAM(以便操作码缓存不会耗尽内存) ,这会很糟糕)

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