我们托管了一个由 Amazon EC2 托管的 Magento 网上商店,但我们遇到了速度问题。我们目前正在考虑转向另一家提供商。我们找到了一家托管提供商,我们现在拥有一个测试帐户。速度比较好。他们使用 memcached,这让我想知道如果我们在服务器上使用它,这将如何改善我们的情况。
我读过 memcached 缓存数据库表,但我知道它安装在网络服务器上,而不是数据库服务器上。
使用 Memcached 是否有任何缺点或风险?
除了提高速度之外,这还会对其他应用程序产生不可预见的影响吗? RAM 怎么样——我们需要更多内存才能正常工作吗?现在我们有 1715MB RAM(奇怪的数字,但这就是它报告的内容)。
答案1
将 memcached 安装到计算节点或网络服务器上——这样它就可以在查询到达线路之前对其进行缓存。如果(例如)php 在联网之前可以访问丰富的缓存,那么您的 apache 实例将会更快。无论如何,最好将数据库盒上的备用内存分配给数据库实例,以便它可以使用尽可能多的内存并缓冲它可以使用的内存,从而将其保留在内存中。
当然,Memcached 将使用 Web 服务器上的内存,并且您不希望过度分配,以免您的计算/Web 节点开始占用交换空间:这样做时您会消除所有空间权衡。
以我有限的经验来看,这并不是什么灵丹妙药。并且需要像任何其他缓存或任何其他性能调整工作一样进行调整和观察。当每个数据库有多个网络主机时,它会变得更好,但它仍然应该向您展示一个网络盒和一个数据库盒的一些不错的改进。我应该说,我还没有在数据库和网络位于同一个盒子上的情况下安装它,如果你正在考虑这样做,我可能会重新考虑。
答案2
使用 Memcached 是否有任何缺点或风险?
是的。如果您与同时运行网站的其他用户共享计算机,请勿使用它。 memcached 工作的本质是它在本地监听端口。任何拥有本地访问权限的人都可以访问 memcached,并且存储在其中的任何内容都将变得容易受到攻击。您还应该确保 memcached 端口被阻止与互联网连接。