转发由钉钉群中提出的问题:调用阿里云SDK循环创建多台ECS时,遇到 SDK.ServerUnreachable Unable to connect server: timed out 超时。
这个问题出现的原因是,ECS创建实例(CreateInstance请求)的最长等待时间为90秒,但SDK对所有类型的请求均设置了一个固定的超时时间(Java SDK为15秒,Python SDK为10秒,.NET SDK为100秒, PHP SDK超时时间不详)。所以,当某次ECS CreateInstance请求的执行时间超过上述SDK超时时间设置后,timeout错误就发生了。
这个问题是SDK的一个已知问题。我们计划在未来的版本中修正这个问题。现在,解决这个问题的办法是对SDK设置一个合适的超时时间,以Java SDK为例:
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
HttpClientConfig httpClientConfig = HttpClientConfig.getDefault();
httpClientConfig.setReadTimeoutMillis(100); // 设置网络读超时为100秒
profile.setHttpClientConfig(httpClientConfig);
DefaultAcsClient client = new DefaultAcsClient(profile);
另外,ECS提供 RunInstances 接口用来批量创建实例,最多支持100个Instance,使用这个接口代替循环调用CreateInstance可以增加程序的稳定性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。