小编jto*_*ron的帖子

为什么 RDS 代理会使性能变差?

我在 AWS 中为 postgresql 11 部署了 RDS Aurora 集群。我的 lambda 正在通过 IAM 身份验证与该集群进行通信。由于 lambda 是无服务器的,因此每次触发 lambda 时我都必须创建与数据库的连接,并在完成时关闭连接。这不是很好,因为创建数据库连接很繁重并且需要时间。我使用 xray 来观察连接性能,创建新连接需要 150 毫秒。它还会给数据库集群带来很大的负载,因为数据库上会有许多短暂的连接。

经过一番搜索,我发现 RDS proxy 就是为了解决这个问题而设计的。因此,我部署了 RDS 代理来使用用户名/密码连接到我的 Aurora 集群。我的 lambda 通过 IAM 身份验证连接到 RDS 代理。

当我观察创建连接性能时,情况变得更糟。创建连接需要500ms以上,有时甚至需要1秒以上。

为什么使用RDS代理时情况更糟?代理中有什么我没有配置的吗?

postgresql amazon-web-services amazon-rds amazon-aurora amazon-rds-proxy

6
推荐指数
0
解决办法
1780
查看次数

Spring中DataBinder与ConversionService的区别

关于将Web请求绑定到模型对象,我在使用Spring的DataBinder和ConversionService的使用和目的时遇到了一些困惑.出现这种情况是因为我最近尝试通过添加来使用JSR-303验证.

在此之前我用过:

<bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="webBindingInitializer">
        <bean class="mypackage.GlobalWebBindingInitializer" />
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

这很好,因为我想要一个可供多个控制器使用的全局DataBinder.在GlobalWebBindingInitialzer类中实现以下几个:

binder.registerCustomEditor(MyClass.class, new PropertyEditorSupport(MyClass.class)
Run Code Online (Sandbox Code Playgroud)

但是我想使用@Valid注释并添加.这样做的副作用是上面的AnnotationMethodHandlerAdapter bean已经被定义为注释驱动的一部分,因此忽略了我的全局数据绑定器.

所以现在我创建了这个类:

public class MyClassConverter implements Converter<String, MyClass>
Run Code Online (Sandbox Code Playgroud)

我很迷惑.如果我想使用我应该使用转换服务而不是数据仓?

java validation spring databinder bean-validation

5
推荐指数
1
解决办法
3592
查看次数

无法从 Docker Build 中的 ECR 中提取

当我尝试使用 AWS CodeBuild 从 ECR 中提取映像作为 Docker Build 的一部分时遇到凭据问题。

对于上下文,我们的设置是这样的

Codebuild 正在调用我们编写的内部 docker 工具。这个工具然后正在做 docker 构建。可以使这更容易理解的示例命令:

../codebuild-templates/ourtoolscript docker -v
Run Code Online (Sandbox Code Playgroud)

“ourtoolscript”只是一个设置一堆环境变量的bash脚本,最后用我们指定的命令调用docker run。

问题
我们正在尝试在此工具中进行 docker 构建。它可以在本地工作,也可以与其他不从 ECR 拉取映像进行构建的存储库一起使用。
我们正在这样做,因此所有标记逻辑和所有内容都是工具中的一个脚本,我们可以将其应用于每个存储库。所以说只在工具之外做一个 docker build 是不可接受的解决方案。

如果 docker 文件从 ECR 中提取“FROM”,它将失败:

time="2019-03-12T14:48:25Z" level=error msg="Error listing credentials" error="ecr: Failed to get authorization token: MissingRegion: could not find region configuration"
Get https://URLTOECRWITHTAG: no basic auth credentials
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情

我所知道的

  • CodeBuild 提供的凭据可以很好地进入我们的工具。因为它可以毫无问题地拉推
  • 如果不是从 ECR 映像构建,我可以构建得很好
  • docker …

docker dockerfile aws-codebuild docker-in-docker aws-ecr

5
推荐指数
0
解决办法
1347
查看次数

Sequelize 与 AWS RDS 代理连接问题

我已经通过 AWS API Gateway 和 AWS Lambda 设置了无服务器 API,它们利用 AWS RDS 代理连接到 RDS MySQL 数据库。

我通过执行以下操作在每个 Lambda 执行上打开连接:

sequelize = new Sequelize(process.env.DB, process.env.USER, process.env.PASS, {
            host: process.env.RDS_PROXY_ENDPOINT,
            dialect: 'mysql',
            dialectModule: mysql2
        });
...

 console.info("doing authenticate");
            await this.sequelize.authenticate();
 console.info("done, returning connection.");

... 

BUSINESS LOGIC (mostly CRUD operations)

...

finally{
  await sequelize.close();
}

Run Code Online (Sandbox Code Playgroud)

现在,我们在某些 api 调用上遇到随机 lambda 超时,如果刷新页面,则同一端点上的后续 api 调用会成功。

问题是:

在使用 lambda 函数中的连接将其释放到代理后,我是否应该调用sequelize close?

这是我的 RDS 代理面板,您可以看到客户端连接大多为 1 或 2 个,但我遇到了连接问题。

有什么建议吗?

这是我的 RDS 代理面板

mysql amazon-web-services node.js sequelize.js amazon-rds-proxy

5
推荐指数
0
解决办法
1296
查看次数

处理 AWS RDS 连接池(使用 POSTGRES 13)和节点 Lambda

我们在 AWS 中使用 RDS 实例,它是 POSTGRES 13。我们有基于节点的 Lambda,可以将数据返回并发布到数据库。目前,他们为每个事务打开和关闭单个连接,我们希望通过实现连接池来优化这一点。

有一项专门为处理数据库连接而设计的 AWS 服务,称为 AWS RDS Proxy,但它与 POSTGRES 13 不兼容。我们正在寻找替代方法,并且非常感谢您在这方面的任何见解。

我们正在考虑将数据库连接拉到 Lambda 处理程序之外,以便它保持状态(直到 Lambda 被删除),但这无法关闭其与数据库的连接,而且我们担心填满所有可用连接。情况可能是这样,也可能不是。

非常感谢,

山姆

postgresql amazon-rds node.js aws-lambda amazon-rds-proxy

5
推荐指数
1
解决办法
7256
查看次数

是否可以将 SQLAlchemy 与 AWS RDS 数据 API 一起使用?

AWS 最近推出了数据 API。这简化了 Lambda 函数的创建,通过允许 API 调用而不是直接数据库连接消除了额外复杂性的必要性。

我正在尝试在 AWS Lambda 函数中使用 SQLAlchemy,我真的很想利用这个新 API。

有谁知道是否有任何支持,或者是否即将支持?

或者,创建一个新引擎来支持这一点有多困难?

python sqlalchemy amazon-web-services amazon-aurora aws-rds-data-service

4
推荐指数
1
解决办法
2018
查看次数

AWS RDS Proxy 可以直接与读复制实例配对吗?

我使用现有的 Aurora PostgreSQL集群创建了一个RDS 代理

但我想将代理与集群的特定只读副本实例配对。那可能吗?

postgresql amazon-web-services amazon-rds amazon-aurora amazon-rds-proxy

4
推荐指数
1
解决办法
1386
查看次数

无法通过 RDS 代理连接到 RDS PostgreSQL 数据库实例

我正在尝试使用 RDS 代理来汇集和共享与带有 PostgreSQL 引擎的 RDS 数据库建立的连接。问题是我可以通过 ECS 实例或在 PgAdmin 中打开与数据库的连接,但是,我无法通过代理进行连接。为了尝试通过 PgAdmin 中的代理进行连接,我使用的是代理端点而不是 DB 端点,但连接尝试超时。

我已成功创建代理并与我的数据库关联,代理和数据库状态都可用。我遵循了示例代理设置,并且数据库和代理使用相同的 VPC 安全组。

有任何想法吗?

在此处输入图片说明

在此处输入图片说明

proxy amazon-web-services amazon-rds amazon-rds-proxy

3
推荐指数
1
解决办法
3440
查看次数

数据库代理支持哪些 RDS 数据库实例?

我正在尝试通过 CloudFormation 为 Postgres 12.3 RDS 实例(不是 Aurora)创建一个 RDS 数据库代理。堆栈创建失败并显示以下消息:

Database engine POSTGRES 12.3 for DB Instance db-name is not supported. Register the DB cluster instead of DB instance, or use another DB instance that is supported. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID: ...)
Run Code Online (Sandbox Code Playgroud)

我找不到关于支持哪些数据库实例的任何文档,即 Postgres 12.2 可以吗?配置集群会有什么不同吗?从我看到的文档来看,似乎只有 Aurora 数据库支持集群,所以这可能不是一个选项。

根据这篇亚马逊博客文章,PostgresRDS 代理现在“普遍可用”。

编辑:11.2 也失败Database engine POSTGRES 11.2 for DB Instance db-name is not supported.

postgresql amazon-rds aws-cloudformation amazon-rds-proxy

2
推荐指数
2
解决办法
2312
查看次数