首页 > 解决方案 > 如何提高跨不同地理区域的 Django 应用程序的性能?

问题描述

我有一个 Django 应用程序,它使用 Nginx 和 django-channels托管在位于us-east-1地理区域的 AWS 盒子上。最近,我在ap-southeast-1地区有一些用户抱怨我的应用程序响应速度不快。该应用程序对我来说运行良好,因为我使用的是 us-east-1。

  1. 如何在用户抱怨之前检测到某个区域的性能不佳?
  2. 在 ap-southeast-1 时区,我可以做些什么来提高应用程序的性能和用户体验?
  3. 作为单元测试或类似的一部分,有什么方法可以测试另一个地理区域的性能吗?

我觉得#2 的答案与以下内容有关:(A) 在 ap-southeast-1 中添加另一个 Web 服务器和 (B) 缓存,但我很想知道是否还有其他我应该做的事情正在做。

但是,我不知道如何首先检测其他区域的性能下降,或者进行测试以确保它不会在未来再次发生。

标签: djangoamazon-web-serviceswebserver

解决方案


是的,无论您有用户,您都应该拥有一台服务器。但是,如果不同区域的多个服务器必须与同一个数据库通信,那么当服务器与另一个区域的数据库通信时,您仍然会遇到延迟问题。

最好的解决方案是在所有受支持的区域中拥有完整的堆栈、服务器和数据库,并使用跨区域复制来确保所有区域共享相同的数据。某些 AWS 数据库(例如DynamoDBRDS )支持此功能。

随着您的架构变得越来越复杂,使用Cloudformation管理每个区域中的堆栈以使所有内容保持最新可能是一个好主意。

至于检测性能,Cloudwatch是监控 AWS 资源的好工具。根据您用于服务器的 AWS 资源,它应该有一些指标来衡量响应时间。

至于测试性能,您可以考虑在另一个区域创建服务器的开发/测试版本,并使用代理来访问它。然后只需使用 Cloudwatch 查看这些请求需要多长时间。


推荐阅读