因此,我将所有网站都托管在 Slicehost 上,并且现在每个应用程序都在单独的切片上。
是否有必要为只是memcache 并且我的单独应用程序都使用该切片上的 memcache 吗?
这样做的缺点是什么?我能看到的优点是只需管理一个 memcache 安装,并能够专门优化切片以快速提供缓存文件,而不必担心其他任何事情。
答案1
假设您的其余设置都良好,那么不行。
正如 temoto 所写,Memcached 是为在 webnodes(web 应用服务器)上运行而创建的,其前提是 webnodes 的 CPU 负载很重,但有空闲的 RAM。Memcached 的整个架构都是为了在多台服务器上运行而构建的;服务器越多越好。
因此,如果您要运行 Memcached,则应在所有具有一些可用 RAM 的服务器上运行它。可以说,您还应该在所有 Web 服务器(在不同的端口上)上运行所有 Web 应用程序,以便充分利用 CPU 容量来应对负载峰值。(使用前面的负载平衡器根据 URL 将流量路由到正确的应用程序。)
但是,这种设置在日常系统管理员工作中管理起来会更加复杂。这可能不是扩展应用程序的最佳方式。
你不用写你正在使用哪个平台。大多数现代 Web 应用程序服务器都具有可用的进程内缓存机制。在进入网络缓存之前先查看进程内缓存像 Memcached...
答案2
理论上,Web 应用程序消耗大量 CPU(请求解析、模板渲染)和少量内存。Memcached 则相反。这使得它们成为完美的邻居。
但在实践中,您的应用程序通常使用一些数据库服务器,该服务器具有内部缓存,并且通常在内存更多的情况下工作得更好。
由于您没有提供详细信息,因此很难针对这种普遍的情况提供建议。
- 如果您希望维护更简单,请将每个网站分开。如果出现问题,则只有单个网站会瘫痪。
- 如果您想要更加密集地使用现有资源,请专门为 DB 分配一到两个切片,并将其他所有切片用于 memcache。
- 单独为 memcached 划分一个切片是没有意义的,因为该机器的 CPU 将永远处于休眠状态:您只使用内存,而不使用 CPU 周期。这对主机提供商来说是好事,对您来说却很糟糕。
但在改变任何事情之前,请进行深入分析,找出当前的瓶颈在哪里。