Memcache / Redis的独立服务器?

时间:2015-07-17 06:26:29

标签: django redis server memcached linode

我正在为我的项目使用Django,我将在Linode或任何其他托管服务上托管它。另外,如果我想使用memcache,我需要一个新的Linode吗?意味着只有一台服务器可以,或者我必须在2台服务器上托管我的网站,一台用于memcache,一台用于django? Redis也一样吗?我还需要一个单独的Mysql服务器吗?

2 个答案:

答案 0 :(得分:4)

你说的是Memcached或Redis,所以我假设Redis将在没有持久性的情况下部署,只有内存配置。

在这种情况下,即使你在一台服务器上运行它们,Memcached和Redis也不太可能饱和,因为如果你的请求/秒变高,限制因素更可能是单个Django实例。

但是,您应该确保有足够的内存并为Memcached / Redis配置适当的最大内存使用量(在两种不同的服务中实现此目的的不同方法)。请注意,在内存压力下,Linux OOM杀手可能会杀死你的缓存,所以如果你去单个实例,这在我看来是明智的第一步,请确保你的Django内存使用量加上内存你为缓存分配,不足以接近实例可用内存的限制。

CPU很难成为一个问题因为我说因为Memcached / Redis非常擅长使用很少的CPU,所以我无法预见Django可以正常服务页面的设置但实例遇到麻烦,因为CPU是被缓存烧毁。

答案 1 :(得分:3)

我认为你不明白没有人是算命巫师。没人知道你每秒会收到多少请求,也不知道每个请求的cpu /内存密集程度如何。没有人知道你的代码是如何优化的。没有人知道您的应用程序是重读还是重写。您的用例是您自己的,您可能是唯一估计它的人。

我唯一真正的建议是尝试估算您的服务器数据和服务器负载,并在一台计算机上对您的设置进行基准测试。如果您对性能不满意,请按比例放大。您可以通过增加linode的大小来垂直扩展,也可以通过添加更多的linode实例来水平扩展。在后一种情况下,您很可能将数据库放在自己的机器上,并且有多个django实例由负载均衡器提供。这些Django实例可以在一台机器上共享相同的内存缓存,或者每个实例都可以在自己的机器上拥有自己的内存缓存。哪一个更好?我不能告诉你。这又取决于你的用例。

如果我是你,我会在一个linode实例上设置它。我会创建我认为接近现实世界的测试数据。然后我会尝试用每秒估计的请求数来测试我的响应时间。我会测量响应时间,缓存命中和内存使用情况。然后我会根据这个决定我的用例是否满足于这种性能水平,因为我真的是唯一知道什么是令人满意的性能的人。此外,添加更多linode资源并不一定是我首先尝试提高性能的地方。

有关优化和基准测试的一些重要提示,请访问: https://docs.djangoproject.com/en/1.8/topics/performance/ http://blog.disqus.com/post/62187806135/scaling-django-to-8-billion-page-views http://scottbarnham.com/blog/2008/04/28/django-performance-testing-a-real-world-example/

关于扩展Django的深夜阅读可以在很多书中找到,我喜欢这个: https://highperformancedjango.com/

对不起,如果我听起来有点生硬,我只是想让你明白,没有人可以走进这里,给你一个很有信心的答案。这个问题没有直截了当的答案。

TL; DR从一个实例开始,只有在你确信自己需要时才放大。