2015-06-15 88 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有點幫助,但還不夠,所以我設置了防火牆