选择适当的缓存机制

我的设置:

  • 4个网络服务器
  • 静态内容服务器(NFS安装)
  • 2数据库服务器
  • 2“做魔术”服务器
  • 额外的8台机器被指定为多用途。
  • 我正在为三种缓存机制编写一个包装器,以便它们能够以一种有点标准化的方式使用:Filesystem,Memcached和APC。 我试图提供使用示例(以及实际放入每个缓存的内容)。

    文件系统

    处理我们生成并静态提供的内容。 RSS提要,旧的报告数据,用户特定的页面等......这些都被缓存到静态服务器。

    Memcached的

    PHP会话数据,MySQL查询结果,通常需要在我们的系统中使用的东西。 我们有8台机器可以包含在服务器池中。

    APC

    我不知道。 这两个“做魔术”服务器不是任何分布式系统的一部分,因此他们似乎可以将查询结果缓存在APC中并从那里开始工作。 过去,我想不出任何事情。

    查询缓存

    鉴于我们使用SQL的本质,查询缓存会降低性能。 我禁用了这个。

    一般来说,哪些类型的数据应该存储在哪里? 这种设置是否有意义?

    在分布式系统中有没有使用APC数据缓存(我想不出来)?

    有没有我错过的东西会让事情变得更容易或更有效率?

    编辑:我终于明白帕斯卡的话了。 我一直坚持认为我只是将一部分配置/任何东西移动到APC,并且仍然从磁盘加载文件的其余部分。 还有其他建议吗?


    我为某些项目使用了相同的缓存机制; 我们使用APC + memcached作为缓存系统。

    在缓存数据时,APC和memcached之间有两个/三个主要区别:

  • 如果我没有记错的话,APC访问速度要快一点(比memcached快5倍),因为它只是本地的 - 即不涉及网络。
  • 使用APC,您的缓存将在每台服务器上重复使用; 使用memcached,服务器之间不存在重复
  • 这意味着memcached确保所有服务器都具有相同版本的数据; 而存储在APC中的数据在每台服务器上可能不同

  • 我们通常使用:

  • 对于必须经常访问的数据,APC可以快速生成,并且:
  • 要么不经常修改
  • 或者它不在所有服务器上是否相同
  • memcached用于需要更多时间生成和/或使用较少的数据。
  • 或者,对于必须立即可以看到修改的数据(即,在写入数据库时​​,也会重新生成缓存的条目)
  • 例如,我们可以:

  • 使用APC存储配置变量:
  • 不要经常改变
  • 经常访问
  • 很小
  • 使用memcached处理文章内容(例如,针对CMS应用程序):
  • 不是那么小,而且有很多,这意味着它可能需要比单独一台服务器更多的内存
  • 很难/很难产生

  • 一些附注:

  • 如果有多个服务器尝试写入通过NFS共享的文件,则可能会出现问题,因为NFS上没有锁定机制(据我记忆)
  • APC可以用来缓存数据,但是使用它的最重要的原因是操作码缓存功能(可以在PHP服务器上节省大量的CPU)
  • memcached中的条目的大小是有限的:你不能存储大于1M的条目(我有时会遇到这个问题 - 很少,但是当它发生时它不好)^^)
  • 链接地址: http://www.djcxy.com/p/21687.html

    上一篇: Selecting an appropriate cache mechanism

    下一篇: Limiting login attempts regardless of user?