OpenStack Swift如何处理并发的RESTful API请求?

时间:2013-06-25 04:18:36

标签: java concurrency openstack openstack-swift

我安装了一个swift服务,并试图了解处理并发请求的能力。所以我在Java中创建了大量的线程,并通过RestFUL API

发送

毫不奇怪,当请求数量增加时,程序开始抛出异常。

  

引起:java.net.ConnectException:连接超时:connect at   java.net.DualStackPlainSocketImpl.connect0(Native Method)at   java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)   在   java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)   在   java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)   在   java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)   在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)at   java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)at   java.net.Socket.connect(Socket.java:579)at   java.net.Socket.connect(Socket.java:528)at   sun.net.NetworkClient.doConnect(NetworkClient.java:180)at   sun.net.www.http.HttpClient.openServer(HttpClient.java:378)at   sun.net.www.http.HttpClient.openServer(HttpClient.java:473)at   sun.net.www.http.HttpClient。(HttpClient.java:203)

但有谁能告诉我time out是怎么发生的?我很好奇SWIFT如何处理这些请求。这是通过排队请求,因为队列中有太多的请求,等待太长时间,它只是从队列中被踢出?如果这成立,是否意味着它是一种处理请求的异步机制?

让它变得更有趣,有时候我也会遇到Connection refused错误和Error writing request body to server,这会是另一种可以用机制解释的观察结果吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Swift使用Proxy-Server来处理过多的并发请求和在设计Swift基础架构时,您可以根据需要添加/删除,尽管建议在生产环境中使用2个。

此外,如果您使用swift进行基准测试,则应使用ssbench https://github.com/swiftstack/ssbench

OpenStack还提供适用于各种编程语言的SDK,包括Java https://wiki.openstack.org/wiki/SDKs#Java

希望它有所帮助。