【问题标题】:Why is running an API on localhost so much slower than on AWS EC2 instance?为什么在 localhost 上运行 API 比在 AWS EC2 实例上慢得多?
【发布时间】:2020-09-18 23:05:45
【问题描述】:

我是一名新的 Java 开发人员,我一直在开发一个小应用程序,用于在我们学校跟踪我的跑步者的里程。后端是Java,服务器最密集的操作是获取所有队友的列表,然后找到他们上周的里程总和,并按从高到低的顺序排列。当我在 localhost 上运行时调用此端点时,这需要 11.5 秒!我发现使用并行流将时间缩短到大约 8.5 秒,但我仍然担心这太长了。我将新的 JAR 上传到 AWS EC2 实例,不到一秒钟!所以我的问题是,为什么我的本地主机(四核 i7 7600k 和 16 GB 内存)比 AWS EC2 实例在相同的操作中慢很多? EC2 实例连接到运行 MySql btw 的 RDS 实例。谢谢!

【问题讨论】:

  • 您的数据存储在哪里?它在 AWS 上的数据库中吗?
  • 有多少队友和单独的里程数据点?
  • 您有什么类型的 AWS EC2 实例?您是否从本地计算机连接到远程 RDS 实例?
  • 当你在 localhost 上运行它时,是否还有其他依赖项,例如数据库等不在 localhost 上?请为您的问题添加详细信息,以帮助其他用户更好地理解和帮助您。
  • 我在 t2.micro 实例上运行,8GiB,区域是 us-east-2,我的数据库在运行 MySql 的 AWS 关系数据库中。主队大约有 40 名队友,但我有几个“测试”团队,大约有 5 个用户,当时也列在表格中。

标签: java amazon-web-services amazon-ec2


【解决方案1】:

我遇到了同样的问题。这可能是往返时间,而不是处理时间。我的笔记本电脑在英国,我所有的 AWS 服务都在 us-east-1。

应用程序中的一个“操作”可能涉及到 AWS 服务的多次访问,例如向 Cognito 发送令牌,从 DynamoDB 获取一些数据,然后根据第一个响应获取更多数据等。这都涉及到多次往返从英国到美国。您的服务器可能与您调用的服务位于同一位置,而 RTT 则要少得多。

【讨论】:

  • 我认为可能是这种情况,但我住在中西部(“美国的天桥区”),所以我离我所有的 AWS 服务更近,我认为差异不会有那么大!
  • 如果您想进一步调查,您可以为流程的不同部分创建一个计时器并将它们打印到日志中,然后比较本地和您的服务器。无论如何,您的项目做得很好,听起来您为新开发人员做得很好。
猜你喜欢
  • 2013-07-02
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多