django - 如何提高跨不同地理区域的 Django 应用程序的性能?
问题描述
我有一个 Django 应用程序,它使用 Nginx 和 django-channels托管在位于us-east-1地理区域的 AWS 盒子上。最近,我在ap-southeast-1地区有一些用户抱怨我的应用程序响应速度不快。该应用程序对我来说运行良好,因为我使用的是 us-east-1。
- 如何在用户抱怨之前检测到某个区域的性能不佳?
- 在 ap-southeast-1 时区,我可以做些什么来提高应用程序的性能和用户体验?
- 作为单元测试或类似的一部分,有什么方法可以测试另一个地理区域的性能吗?
我觉得#2 的答案与以下内容有关:(A) 在 ap-southeast-1 中添加另一个 Web 服务器和 (B) 缓存,但我很想知道是否还有其他我应该做的事情正在做。
但是,我不知道如何首先检测其他区域的性能下降,或者进行测试以确保它不会在未来再次发生。
解决方案
是的,无论您有用户,您都应该拥有一台服务器。但是,如果不同区域的多个服务器必须与同一个数据库通信,那么当服务器与另一个区域的数据库通信时,您仍然会遇到延迟问题。
最好的解决方案是在所有受支持的区域中拥有完整的堆栈、服务器和数据库,并使用跨区域复制来确保所有区域共享相同的数据。某些 AWS 数据库(例如DynamoDB和RDS )支持此功能。
随着您的架构变得越来越复杂,使用Cloudformation管理每个区域中的堆栈以使所有内容保持最新可能是一个好主意。
至于检测性能,Cloudwatch是监控 AWS 资源的好工具。根据您用于服务器的 AWS 资源,它应该有一些指标来衡量响应时间。
至于测试性能,您可以考虑在另一个区域创建服务器的开发/测试版本,并使用代理来访问它。然后只需使用 Cloudwatch 查看这些请求需要多长时间。
推荐阅读
- node.js - 谁能告诉我如何使用把手将智能合约连接到 mongodb?
- r - 在 R 中使用 read.csv 从 URL 读取 Corona 数据错误
- javascript - 如何使用 fetch() 使用来自服务器的数据填充变量?
- node.js - 如何在 node.js 中实现多项选择
- excel - VSTO vb.NET - 获取现有工作表控件的名称
- php - 数据库数据以单行显示
- python - 如何有条件地对 Pandas 数据框求和
- android - 我正在使用 FirebaseUi 多重登录方法,但如何授予每个人登录应用程序的权限..?
- node.js - 在angular8应用程序中成功登录后打印用户名
- c# - Ubuntu MATE ARM32 上的 Azure 语音 SDK 意图识别错误