1

我将为我的 PHP 应用程序使用 memcache(不是 memcacheD)。我有一些困惑。

我为 memcache 找到了这个包装类。

1)作为连接方法,它添加所有服务器以拉动。如果对每个请求都执行此操作,是否会减慢网络延迟的永久性原因?

2)如果池中有2台服务器并且一台离线请求仍然会发送到离线服务器?没有其他方法可以从 memcache 中自动删除离线服务器吗?如果不是 memcache.allow_failover = 1 设置做什么?

3) 有没有办法查看哪个内存缓存服务器服务了多少缓存请求?

4

1 回答 1

2

任何 memcache API/wrapper 都可以。您甚至可以通过 PHP 的 CURL 方法构建您自己的。

1)是否每个请求都会拉动所有服务器并导致网络延迟?

不。当您的应用程序发出请求时,它会尝试连接到单个服务器,并在出现故障、NOT_FOUND、超时等时“去钓鱼”到下一个服务器。可能会有一些网络延迟,但比与数据库交互要少得多如果您担心 I/O 和延迟,您应该能够在您的应用程序中构建一个简单的解决方案。

2) 是否仍会向离线服务器发出请求?

由你决定。尽管系统已关闭,但您的应用程序可能仍在尝试连接到它。如果您决定使用 PECL 的 memcache API,您的应用程序应该能够识别 memcached 是否在任何给定服务器上正常运行。内存缓存::checkServerStatus

2.1) memcache.allow_failover 是做什么的?

这正是它所说的。如果您有 memcached 服务器ABD。服务器A宕机。两个选项都会发出 USER_NOTICE;但是memcache.allow_failover=1将继续对服务器B进行读写,并允许读写。当memcache.allow_failover=0所有 memcache I/O 将优雅地返回 false 时。

查看文档

3) Memcached 服务器报告

Memcached 提供了一个stats命令,PECL 的 memcache 也提供了一个状态方法。但是它们与内存/平板统计信息有关。如果您想要使用情况的监控报告,请查看New Relic

于 2012-08-03T21:05:34.033 回答