如何为你的 django 应用选择 EC2 实例?

如何为你的 django 应用选择 EC2 实例?

可能重复:
您能帮助我进行容量规划吗?

我的团队已经创建了一个不错的 Django 应用程序,现在要将其部署到 EC2 实例上。现在我正在寻找几个问题的答案:

  • 我如何确定哪个实例适合我的应用程序(微型、小型、中型、大型等)。换句话说,我如何知道此应用程序需要多少内存/处理能力。
  • 如何量化服务器上​​的最大并发用户数。这对于此应用程序很重要,我需要知道微型/小型/中型或大型实例可以支持多少用户。
  • 我是否应该将所有内容安装在单个实例上,还是应该为数据库、备份和应用程序设置单独的实例。
  • 如何估算增加每个用户所需的额外资源(我认为这不是线性的)

我知道这些问题的答案非常主观,大多数事情取决于应用程序设计和架构。因此,我更有兴趣了解做出此类决定的过程。

答案1

在问题的最后,您自己已经指出,除了“视情况而定”之外,不可能对您的问题给出直接、客观的答案,因此我将尝试根据我使用 AWS 的经验(并不丰富)来提供帮助。

我如何确定哪个实例适合我的应用程序(微型、小型、中型、大型等)。换句话说,我如何知道此应用程序需要多少内存/处理能力。

通过测试、基准测试和实验。有几篇文章指出,与其他提供商的“同等”硬件规格相比,EC2 的性能不佳(是一个不错的选择)。我的建议是设置一个您认为最有可能的环境,然后监控、负载测试、对您的实例进行基准测试,试用新实例并确定哪一个最适合您的应用程序要求。如果没有关于您的架构的更多详细信息,这可能是您能得到的最佳答案。

如何量化服务器上​​的最大并发用户数。这对于此应用程序很重要,我需要知道微型/小型/中型或大型实例可以支持多少用户。

再次强调,这很大程度上取决于您的系统架构和事务的配置。它们是 I/O 密集型、CPU 密集型还是内存密集型?最好的建议是您应该进行实验。

我是否应该将所有内容安装在单个实例上,还是应该为数据库、备份和应用程序设置单独的实例。

我建议为应用程序的每个层级设置单独的实例。AWS 上的典型设置包括用于应用程序的 EC2 实例(位于 Elastic Load Balancer 后面或不位于 Elastic Beanstalk 后面)、用于数据库的另一组 EC2 实例或 RDS、用于持久化文件和备份的 S3 等等。如果您不希望负载过大(甚至中等负载也不大),那么单个medium实例可能完全符合您的需求。进行分离的主要原因是您可以在将来独立扩展它们。在我看来,这就是 AWS 的最大优势:灵活性。您只需单击鼠标即可扩展您的 RDS 系统(几乎是字面意义上的)。您还可以毫不费力地在 Web 层前面添加 Elastic Load Balancer,然后向您的生态系统添加 2 或 3 个额外的 Web 服务器。因此,我会将它们分开,以最大限度地利用这种灵活性。

如何估算增加每个用户所需的额外资源(我认为这不是线性的)

实验、基准测试等。抱歉我重复了,但当你开始部署你的资源时,你会意识到事情真的非线性,使用 AWS 时您的期望可能并不总是正确的。通过遵循一些简单的提示(例如我在上一个问题中给出的答案),不能保证您的系统会根据您的负载轻松扩展,但每当您需要扩展时,事情可能会变得不那么痛苦。

希望能帮助到你。

相关内容