我将对我的PHP应用程序使用memcache(而不是memcacheD)。我几乎没有什么困惑。
我找到了memcache的this wrapper类。
1)与connect方法一样,它添加所有要拉取的服务器。如果对每个请求都这样做,会不会降低导致网络延迟的永久性原因?
2)如果池中有2台服务器,其中一台离线,仍会向离线服务器发出请求吗?没有其他方法可以自动从memcache中删除脱机服务器吗?如果不是,memcache.allow_failover =1设置有什么作用?
3)有没有办法查看哪个memcache服务器处理了多少缓存请求?
发布于 2012-08-04 05:05:34
任何memcache API/wrapper都可以。您甚至可以通过PHP的CURL方法构建自己的脚本。
1)是否每个请求都拉取所有服务器并导致网络延迟?
不是的。当您的应用程序发出请求时,它会尝试连接到单个服务器,并在出现故障、超时( NOT_FOUND )、超时和tc时"go-fish“连接到下一个服务器。可能会有一些网络延迟,但比与数据库交互要少得多。如果您关心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
https://stackoverflow.com/questions/11778495
复制相似问题