对于单服务器 LAMP 站点(通常负载很高),使用 memcache 的最佳方式是什么?
在与应用程序相同的服务器上运行 memcache 守护进程是否有意义,或者这只会从 MySQL 中占用宝贵的内存,从而导致净性能损失。在这种情况下使用 memcache 是否有意义 - 或者是始终为 memcache 提供专用服务器的最佳解决方案?
我很欣赏需要在之前和之后分析网站才能真正回答这个问题,但我不想在现阶段在现场网站上这样做。尤其是当外面的人肯定知道他们头顶上的答案时。
通常,建议(参见memcached 页面中的What about shared memory?)是在与 Web 服务器相同的机器上运行 memcached,前提是 Web 应用程序是 CPU 密集型的(memcached 不是),而 memcached 是 memory-重(大多数 Web 应用程序不是,至少相比之下)。
因此,如果您的 Web 服务器有足够的内存,最好在其上运行 memcached。YMMV。
memcached 的另一个选项 - 根据您正在缓存的信息的规模,是在 APC 中缓存。您应该运行它(或类似的操作码缓存)以帮助加速 PHP 页面交付,所以如果您正在缓存从几个到一百个或更小的地方(我有几个大约 15KB ,一次有 70 多个)变量,您可能会发现将它们存储在 APC 中会带来一些好处。
我有一个缓存一些数据库查找的站点,还缓存一个解析后的 config.ini 文件——在我的(繁忙的)站点上,我每天将节省数百万潜在的数据库命中。