openstack swift:服务器等待客户端发送请求的时间过长
Posted
技术标签:
【中文标题】openstack swift:服务器等待客户端发送请求的时间过长【英文标题】:openstack swift: The server has waited too long for the request to be sent by the client 【发布时间】:2013-11-20 14:32:46 【问题描述】:我们时不时地得到其中的一些:
Caused by: javax.ejb.EJBException: org.jclouds.http.HttpResponseException:
command: PUT PUT_URL
HTTP/1.1 failed with response: HTTP/1.1 408 Request Timeout;
content: [<html><h1>Request Timeout</h1><p>The server has waited too long for the request to be sent by the client.</p></html>]
稍后重试通常有效。是什么导致了这个异常?有没有办法增加 swift 的超时时间?
【问题讨论】:
【参考方案1】:jclouds 1.7.2 包含对此问题的修复:
https://issues.apache.org/jira/browse/JCLOUDS-342
【讨论】:
【参考方案2】:您的问题没有详细的正确信息。
如果您是开发人员,您可以使用以下内容:
import static org.jclouds.Constants.*;
Properties overrides = new Properties();
overrides.setProperty(PROPERTY_MAX_CONNECTIONS_PER_CONTEXT, 20 + "");
overrides.setProperty(PROPERTY_MAX_CONNECTIONS_PER_HOST, 0 + "");
overrides.setProperty(PROPERTY_CONNECTION_TIMEOUT, 5000 + "");
overrides.setProperty(PROPERTY_SO_TIMEOUT, 5000 + "");
overrides.setProperty(PROPERTY_IO_WORKER_THREADS, 20 + "");
// unlimited user threads
overrides.setProperty(PROPERTY_USER_THREADS, 0 + "");
Set<Module> wiring = ImmutableSet.of(new EnterpriseConfigurationModule(), new Log4JLoggingModule());
// same properties and wiring can be used for many services, although the limits are per context
blobStoreContext = ContextBuilder.newBuilder("s3")
.credentials(account, key)
.modules(wiring)
.overrides(overrides)
.buildView(BlobStoreContext.class);
computeContext = ContextBuilder.newBuilder("ec2")
.credentials(account, key)
.modules(wiring)
.overrides(overrides)
.buildView(ComputeServiceContext.class);
以下是JClouds Configuration docs的引用:
超时: 根据 FutureIterables.awaitCompletion 的控制,聚合命令将需要尽可能长的时间来完成。 如果您需要增加或减少此值,则需要调整属性 jclouds.request-timeout 或 Constants.PROPERTY_REQUEST_TIMEOUT。 这在“高级配置”部分中进行了描述。
如果您正在处理自己的集群,那么您可以使用 swift proxy-server-configuration 中提供的一些可能的配置选项。
【讨论】:
以上是关于openstack swift:服务器等待客户端发送请求的时间过长的主要内容,如果未能解决你的问题,请参考以下文章