2015-06-15 59 views
1

我正在编写一个使用Spring Cloud AWS的弹簧启动应用程序。一旦我开始使用Spring Cloud AWS bean,我注意到在加载Spring应用程序上下文时发生了巨大的减速。以前,环境会在几秒内开始,但现在需要3-5分钟的时间!AmazonEc2InstanceDataPropertySource.getProperty()在亚马逊外运行时速度极其缓慢

我跟踪AmazonEc2InstanceDataPropertySource中的getProperty()方法的一个减速。此尝试多次尝试访问链接本地IP地址(169.254.169.254),其中在亚马逊网络内运行应用程序时可访问,但无法从外部访问。看起来,当在亚马逊的网络之外运行时,代码只是等待所有连接尝试失败,我猜这是在套接字最终超时时发生的?

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

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

回答

1

见类似的问题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有点帮助,但还不够,所以我设置了防火墙