amazon-web-services - AmazonEc2InstanceDataPropertySource.getProperty() 在 Amazon 外部运行时速度极慢

标签 amazon-web-services timeout spring-cloud spring-cloud-aws

我正在编写一个 Spring Boot 应用程序,它使用 Spring Cloud AWS 。当我开始包含 Spring Cloud AWS bean 时,我注意到 Spring 应用程序上下文的加载速度大幅减慢。以前,上下文会在几秒钟内启动,但现在需要大约 3 - 5 分钟!

我已将速度减慢的原因之一追溯到 AmazonEc2InstanceDataPropertySource 中的 getProperty() 方法。它会多次尝试访问链接本地 IP 地址 (169.254.169.254),在 Amazon 网络内运行应用程序时可以访问该地址,但无法从外部访问该地址。看来,当在亚马逊网络之外运行时,代码只是等待所有连接尝试失败,我猜这是在套接字最终超时时发生的?

我的第一个想法是这个超时可能是可配置的,或者我可以配置一个配置文件以确保在本地运行时不会发生这种情况,但我在文档( http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html )中找不到任何内容完全提到了这一点。

感谢这里的任何智慧,谢谢!

最佳答案

查看类似问题https://github.com/aws/aws-sdk-java/issues/450

我意识到,对于我的本地环境(Windows 7),唯一的方法是在链接本地地址 169.254.169.254 上定义防火墙(快速失败)。 还没有找到为什么我的 windows7 与具有相同应用程序的 Mac/win8 表现不同(如此慢)的具体原因。

无论如何,在使用本地开发环境(EC2 外部)时,我还没有找到任何全局标志来禁用与 ec2-instance-metadata 的通信。

cloud.aws.stack.auto=false 有一点帮助,但这还不够,因此我设置了防火墙

关于amazon-web-services - AmazonEc2InstanceDataPropertySource.getProperty() 在 Amazon 外部运行时速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847102/

相关文章:

java - AWS Lambda 中的 Spring Cloud 配置服务器

java - 如何在 zuul/ribbon 中获取请求将转发到的服务器的主机名

amazon-web-services - SAM CLI 在 VPC 和无服务器 API 网关中部署 lambda

amazon-web-services - 我可以使用 AWS 开发工具包从 AWS CloudWatch 检索实时日志吗?

c# - 使用 Dapper.NET 异步 API 时如何遵守 CommandTimeout

ipad - 在3.2 iPad上“无法及时恢复”?

php - jQuery ajax 调用永远不会完成(不会触发成功和错误回调)

java - 为生产环境配置 Spring Cloud Config Server 和 Spring Cloud Vault

node.js - AWS Lambda 图像损坏

html - 如何删除nodejs/html中的科学计数法并仅以十进制显示?