我的设置:
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?