Как OpenStack Swift обрабатывает одновременный запрос API на отдых?

Я установил быстрый сервис и пытался узнать возможность обработки параллельных запросов. Поэтому я создал огромное количество потоков на Java и отправил их через RestFUL. API

Неудивительно, что при увеличении количества запросов программа начала выбрасывать исключения.

Вызвано: java.net.ConnectException: время ожидания соединения истекло: подключение к java.net.DualStackPlainSocketImpl.connect0(собственный метод) к 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) ) на java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) на java.net.Socket.connect(Socket.java:579) на java.net.Socket.connect(Socket.java:528) на sun.net .NetworkClient.doConnect(NetworkClient.java:180) на sun.net.www.http.HttpClient.openServer(HttpClient.java:378) на sun.net.www.http.HttpClient.openServer(HttpClient.java:473) на sun.net.www.http.HttpClient.(HttpClient.java:203)

Но может ли кто-нибудь сказать мне, как это time outпроизошло? Мне любопытно, как SWIFT обрабатывает эти запросы. Это из-за постановки запросов в очередь и из-за того, что в очереди слишком много запросов, и они ждут слишком долго, и их просто выбрасывают из очереди? Если это так, означает ли это, что это асинхронный механизм обработки запросов?

Что еще интереснее, иногда я также получал Connection refused ошибку и Error writing request body to server, это еще одно наблюдение, которое можно объяснить механизмом?

Спасибо.


person Chen Xie    schedule 25.06.2013    source источник


Ответы (1)


Swift использует прокси-сервер для обработки слишком большого количества одновременных запросов, и когда вы разрабатываете инфраструктуру Swift, вы можете добавлять/удалять в соответствии с вашими потребностями, хотя рекомендуется иметь 2 в производственной среде.

Также, если вы проводите бенчмаркинг Swift, вам следует использовать ssbench https://github.com/swiftstack/ssbench.

OpenStack также имеет SDK для различных языков программирования, включая Java https://wiki.openstack.org/wiki/SDKs#Java

Надеюсь, поможет.

person koolhead17    schedule 14.11.2013