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

使用PHP的高性能站点中的Memcache,php,memcached,Php,Memcached,我一直在努力优化一个Web服务,该服务需要返回速度稍快(不到1秒),并且需要保持较高的请求负载(大于1000/秒)。我们使用memcached作为“在内存中”存储对象的一种方式。我们似乎从memcache中获得了大量超时错误 [Thu Jul 23 22:59:42 2009][error][client 123.456.789.10]PHP警告:Memcache::connect()[Memcache.connect]:无法连接到127.0.0.1:11211,连接超时(110) 那么,继续回

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

[Thu Jul 23 22:59:42 2009][error][client 123.456.789.10]PHP警告:Memcache::connect()[Memcache.connect]:无法连接到127.0.0.1:11211,连接超时(110)

那么,继续回答问题

  • 是否可以很好地使用memcache将创建耗时的对象存储在内存中?APC是这些对象的更好位置吗?读取和删除的次数

  • 在设置memcache以提高工作效率时,我是否忽略了一些常见的陷阱


  • 谢谢你的帮助,我对memcache有点陌生,我想我缺少了一些东西

    要回答您的第一点:

    • memcached的强大之处在于它允许创建一个缓存服务器集群:它并不意味着要在一台服务器上使用(如果是这样,您可以这样使用它)
      • 理论上,你有很多服务器,每台服务器都有一些你不需要的空闲RAM
      • 要使用此RAM,请在这些服务器上安装memcached,并将其配置为使用未使用的RAM量
      • 如果一台机器停机,它会自动停止使用,并将负载平衡数据放在其他机器上
      • memcached的缺点(对某些人来说)是基于网络的(即使你只在一台机器上使用它);这意味着比“仅本地”慢一点
    • APC只在一台机器上工作:最好(用作缓存机制)只在一台服务器上存储您需要的数据,或者如果您只有一台服务器;并且没有更多的数据可以存储在RAM中。
      • 主要缺点是它绝对不可伸缩:它被认为是一台机器;如果您有10个,那么您必须拥有相同的数据10次,每台机器上一次
      • 据说APC获取数据的速度大约快5倍,因为它是本地的,并且不基于网络
    关于APC有一件事需要注意:如果您使用它的操作码缓存功能(您应该),请确保您将其配置为有足够的RAM用于操作码+缓存(这样它就不会耗尽操作码缓存的内存,这是不好的)


    如果你需要更多关于memcached的(具体的)帮助,但在这里没有得到太多帮助,这里有一个邮件列表,它有时非常活跃;也许尝试一下会有用。

    如果您只有一台服务器,您可以将memcached配置为使用unix套接字而不是tcp。它应该加快一点(或更多)。