代码之家  ›  专栏  ›  技术社区  ›  Scott Skiles

如何提高跨不同地理区域的django应用程序的性能?

  •  0
  • Scott Skiles  · 技术社区  · 6 年前

    我有一个Django应用程序,托管在位于 us-east-1 使用nginx和django频道的地理区域。最近,我在 ap-southeast-1 地区投诉我的应用程序响应不太快。当我使用US-EAST-1时,该应用程序对我来说运行良好。

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

    我觉得2的答案与以下因素有关:(a)在AP-Southouse-1中添加另一个Web服务器;(b)缓存,但我很想知道是否还有其他需要我做的事情。

    但是,我不知道如何首先检测其他区域正在发生的缓慢性能,或者测试以确保将来不会再次发生这种情况。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Geoff McLennan    6 年前

    是的,最理想的情况是,无论用户在哪里,都应该有一个服务器。但是,如果不同区域中的多个服务器必须与同一个数据库通信,那么当服务器与另一个区域中的数据库通信时,仍然存在延迟问题。

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

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

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

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