【发布时间】:2014-08-14 17:15:23
【问题描述】:
我们有一个由 Heroku 上托管的 Rails 应用程序提供的 json API。我想在一个端点的 SQS 队列上写一条消息,每分钟大约有 800 个请求。 每个请求都会发送一条消息,正文非常小(100 字节字符串)
Queue 和 Heroku 应用程序都位于爱尔兰。
平均每次写入时间为 150 毫秒(6.6 毫秒/秒),这太慢了:该端点的平均响应时间为 100 毫秒,仅通过写入 SQS 将响应时间加倍是不可接受的
多个消息来源指出,他们可以从 EC2 实例向同一区域的 SQS 写入高达 50-80 msg/秒的速度。 Heroku 实例托管在 EC2 上,那么如何解释这种差异呢? 我们可以做些什么来提高写入吞吐量?
这是我们的设置:
- Ruby 2.1.2
- aws-sdk 1.34.1
- 位于欧盟地区的 Heroku 应用
- SQS 队列位于 eu-west-1
- 在 2x dynos 上运行的独角兽
报告写入吞吐量增加 10 倍的来源:
http://aws.amazon.com/fr/blogs/aws/scaling-with-amazon-sqs/ http://notes.variogr.am/post/67710296/replacing-amazon-sqs-with-something-faster-and-cheaper http://www.quora.com/How-fast-is-Amazon-SQS
【问题讨论】:
-
你在测量什么? rails 的整体响应时间还是仅 3d 方通信的时间?你是在负载下测量吗?从没有进行任何其他网络通信的机器上发布来自
Benchmark.measure { call_sqs }的结果
标签: ruby heroku amazon-sqs