3

我目前正在使用 NodeJS 和 DynamoDB 运行一些性能测试。特别是我对一个将项目保存到 DynamoDB 的 NodeJS 进程的可能写入吞吐量感兴趣。

我在 EC2 m1.medium 实例上运行了测试。要访问 DynamoDB,我使用 dynamo NodeJS 模块。在测试期间,我预置了一个具有 1000 个写入容量单位的 DynamoDB 表。我保留了大约 700 字节大小的项目。

这些测试的结果是最大。该系统的写入吞吐量约为 300 项/秒。在此吞吐量下,EC2 实例的虚拟 CPU 接近 100%。

考虑到调用 API 基本上是调用 HTTP REST 服务,与这篇文章相比,结果看起来有点现实:Node.js' http.request 的性能如何?它可以处理多少并发请求?

任何人都可以确认我的测试结果还是您遇到了不同的结果?有没有人测试过 AWS DynamoDB JAVA 或 C# 开发工具包?你有什么表现?

更新: 300 个项目/秒启用了Nodetime。没有那个限制是大约780 项/秒,推送到 DynamoDB REST API。

4

1 回答 1

0

您的瓶颈似乎是 m1.medium 实例。没有太多使用 node.js,我不能说另一个选项是否会表现得更好,但从我的观点来看,node.js 是您可以使用的更轻量级的选择之一。请记住,对 DynamoDB 等 AWS 服务的 REST 调用不仅仅是简单的 REST 调用,它们需要为每个请求创建一个签名,这需要一些基本的散列和加密技术,这可能就是 CPU 的行为方式。散列一个小字符串可能看起来并不多,但是当您必须每秒执行 300 次时,它很容易杀死 CPU。

我的建议是使用另一种实例类型,例如 c1.medium 将提供比 m1.medium 多 150% 的功能。除此之外,您还可以尝试在 python 或 php 中编写一个简单的测试脚本,以查看结果与 node.js 的比较。

于 2012-08-21T20:43:13.817 回答