内存缓存:混乱
Posted
技术标签:
【中文标题】内存缓存:混乱【英文标题】:Memcache : Confusions 【发布时间】:2012-07-31 11:38:52 【问题描述】:我将在我的 php 应用程序中使用 memcache(不是 memcacheD)。我没有什么困惑。
我找到了this wrapper 内存缓存类。
1) 与连接方法一样,它会添加所有要拉取的服务器。如果对每个请求都执行此操作,是否会减慢网络延迟的永久性原因?
2) 如果池中有 2 台服务器并且其中一台脱机,请求仍会发送到脱机服务器?没有其他方法可以从 memcache 中自动删除离线服务器吗?如果不是 memcache.allow_failover = 1 设置做什么?
3) 有没有办法查看哪个内存缓存服务器服务了多少缓存请求?
【问题讨论】:
【参考方案1】:任何内存缓存 API/包装器都可以。您甚至可以通过 PHP 的 CURL 方法构建您自己的。
1) 是否每个请求都会拉动所有服务器并导致网络延迟?
没有。当您的应用程序发出请求时,它会尝试连接到单个服务器,并在出现故障、NOT_FOUND、超时等时“去钓鱼”到下一个服务器。可能会有一些网络延迟,但很多比与数据库交互要少。如果您担心 I/O 和延迟,您应该能够在您的应用程序中构建一个简单的解决方案。
2) 是否仍会向离线服务器发出请求?
由你决定。尽管系统已关闭,但您的应用程序可能仍在尝试连接到它。如果您决定使用 PECL 的 memcache API,您的应用程序应该能够识别 memcached 是否在任何给定服务器上正常运行。 Memcache::checkServerStatus
2.1) memcache.allow_failover 是做什么的?
这正是它所说的。如果您有 memcached 服务器 A、B 和 D。服务器 A 出现故障。两个选项都会发出 USER_NOTICE; 然而,memcache.allow_failover=1
将继续服务器 B,并允许读取和写入。当memcache.allow_failover=0
所有memcache I/O 将返回false 优雅。
查看docs。
3) Memcached 服务器报告
Memcached 提供了stats
命令,PECL 的memcache 也提供了status 方法。但是它们与内存/平板统计信息有关。如果您需要使用情况的监控报告,请查看New Relic
【讨论】:
以上是关于内存缓存:混乱的主要内容,如果未能解决你的问题,请参考以下文章