我目前正在使用NodeJS和DynamoDB运行一些性能测试。 特别是我对一个NodeJS进程的可能写入吞吐量感兴趣,这个进程将项目持久化到DynamoDB。
我在EC2 m1.medium实例上运行了测试。 要访问DynamoDB,我使用dynamo NodeJS模块。 在测试期间,我配置了一个具有1000个写入容量单位的DynamoDB表。 我坚持使用大约700字节大小的项目。
这些测试的结果是最大值。使用该系统的写入吞吐量约为300项/秒。在此吞吐量下,EC2实例的虚拟CPU几乎达到100%。
考虑到调用API基本上是调用HTTP REST服务,与此帖相比,结果看起来很现实:What is the performance for Node.js' http.request ? How many concurrent request it can handle?
任何人都可以确认我的测试结果或者您是否遇到过不同的结果? 有没有人测试过AWS DynamoDB JAVA或C#SDK?你有什么表现?
更新:300项/秒启用了Nodetime。如果没有这个限制,大约 780项/秒就会推送到DynamoDB REST API。
答案 0 :(得分:0)
似乎你的瓶颈是m1.medium实例。没有使用node.js我不能说另一个选项是否会表现更好但是我可以使用node.js作为更轻量级的选择之一。请记住,对DynamoDB等AWS服务的REST调用不仅仅是简单的REST调用,还需要为每个请求创建一个签名,这需要一些基本的散列和加密,这可能就是CPU的行为方式。散列一个小字符串可能看起来不是很多,但是当你每秒必须做300次时它很容易杀死CPU。
我的建议是使用另一种实例类型,例如c1.medium将比m1.medium多150%的功率。除此之外,您还可以尝试在python或php中编写一个简单的测试脚本,以查看结果与node.js的比较结果。