0

ASP.net MVC 应用程序位于 EC2 中并与 RDS (SQL Server) 交互。应用程序通过 NHibernate 向 RDS 发送批量 GET 请求(API 调用)以获取项目。应用程序性能非常缓慢,因为有时它会进行大约 500 次 GET API 调用以从数据库中获取 500 个项目(注意 - 从数据库中获取项目有其自己的存储过程/逻辑)

我指的是理解扩展 RDS https://aws.amazon.com/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizo ​​ntally/ 和https://aws.amazon.com/premiumsupport /知识中心/requests-rds-read-replicas/

但是,没有太多线索支持我的业务场景。

我的问题是(考虑到上述情况):

  1. 有什么方法可以将我的 GET 请求分发到 RDS(SQL Server),以便它可以快速从 SQL Server 返回 500 项?

  2. 是否有可能在没有任何代码或现有架构更改的情况下实现这一点(都来自 .net 和 SQL 端)?

  3. 我应该尝试哪些不同的方法来提高这种性能?

  4. 只读副本的定价详情是什么?

注意:应用程序既可以读取也可以写入。而且,我更关心这个特定的 GET API 调用。

谢谢。

4

1 回答 1

2

有什么方法可以将我的 GET 请求分发到 RDS(SQL Server),以便它可以快速从 SQL Server 返回 500 项?

  • 您将需要在您的应用程序中有一个路由器,它将请求路由到只读副本(可以是很多)。
  • 您可以为该用例提供具有增强容量的不同实例类型的只读副本。
  • 您可以尝试内存缓存,它可以减少响应时间并可以将读取工作负载转移到只读副本。

是否有可能在没有任何代码或现有架构更改的情况下实现这一点(都来自 .net 和 SQL 端)?

  • 根据文档, “应用程序可以连接到只读副本,就像连接到任何数据库实例一样。” 这意味着您的应用程序需要额外的修改来支持用例。

我应该尝试哪些不同的方法来提高这种性能?

  • 具有增强读取能力的内存缓存和实例类型(与上述相同的建议)

只读副本的定价详情是什么?

  • 这取决于您提供的实例类型。

在此处输入图像描述

于 2020-05-05T10:30:55.507 回答