我的设置:
- 4 个网络服务器
- 静态内容服务器(NFS挂载)
- 2 个数据库服务器
- 2 个“施展魔法”的服务器
- 另外 8 台指定为多用途机器。
我正在为三种缓存机制编写一个包装器,以便可以以某种标准化的方式使用它们:文件系统、Memcached 和 APC。我正在尝试提供使用示例(以及在每个缓存中实际放入的内容)。
文件系统
处理我们生成并静态提供的内容。 RSS 提要、旧报告数据、用户特定页面等...这些都缓存到静态服务器。
内存缓存
PHP 会话数据、MySQL 查询结果,通常需要在我们的系统中可用。我们有 8 台机器可以包含在服务器池中。
APC
我不知道。这两个“神奇”服务器不属于任何分布式系统,因此它们似乎可以在 APC 中缓存查询结果并从那里工作。过去了,我什么也想不起来了。
查询缓存
鉴于我们 SQL 使用的性质,查询缓存reduces表现。我已经禁用了这个。
一般来说,什么类型的数据应该存储在哪里?这个设置还有意义吗?
APC数据缓存在分布式系统中是否有任何用处(我想不出)?
我是否缺少一些可以让事情变得更容易或更高效的东西?
编辑:我终于明白了帕斯卡在说什么。我一直在想,我只会将我的配置/任何内容的一部分移动到 APC,并且仍然从磁盘加载文件的其余部分。还有其他建议吗?
我在某些项目中使用相同类型的缓存机制;我们使用 APC + memcached 作为缓存系统。
在缓存数据方面,APC 和 memcached 之间有两/三个主要区别:
- APC访问速度快一点(如果我没记错的话,比 memcached 快 5 倍),因为它只是本地的——即不涉及网络。
- Using APC, your cache is duplicated on each server ; using memcached, there is no duplication accross servers
- 这意味着memcached确保所有服务器具有相同版本的数据;而APC中存储的数据在每台服务器上可能不同
我们一般使用:
- APC for data that has to be accessed very often, is quick to generate, and :
- 要么不经常修改
- 或者如果它在所有服务器上不相同也没关系
- memcached for data that takes more time to generate, and/or is less used.
- 或者对于修改必须立即可见的数据(即当对数据库进行写入时,缓存的条目也会重新生成)
例如,我们可以:
- Use APC to store configuration variables :
- Use memcached for content of articles (for a CMS application, for example) :
- 不是那么小,而且有很多,这意味着它可能需要比我们单独在一台服务器上更多的内存
- 生成起来相当困难/沉重
一些旁注:
- 如果多个服务器尝试写入通过 NFS 共享的同一个文件,可能会出现问题,因为 NFS 上没有锁定机制(就目前我所记得的)
- 是的,APC 可用于缓存数据——但使用它的最重要原因是它的操作码缓存功能(可以节省PHP服务器上大量的CPU)
- memcached 中的条目大小有限:无法存储大于 1M 的条目(我有时会遇到这个问题——很少,但一旦发生就不好了^^)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)