[ 
https://issues.apache.org/jira/browse/HTTPCORE-390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski updated HTTPCORE-390:
---------------------------------------
    Fix Version/s:     (was: 4.4-beta1)
                   5.0
          Summary: Lock-less connection pools  (was: Performance issue on 
AbstractNIOConnPool)

Stephane,
There are more problems with your patch. It breaks 4.x API compatibility by 
altering the SessionRequestCallback interface. It also breaks total max limit 
and max limit per route guarantees. As much I would like to see connection pool 
performance improved in its current form and shape your patch cannot be 
included into the 4.4 branch. I think that a better approach should be 
developing a completely new connection pool implementation that intentionally 
provides no max limit guarantees but improves performance on multi-core systems 
by eliminating thread contention for one global lock. Users would have an 
option to choose a connection pool strategy based on their preferences and 
requirements.

If you are willing to invest more time into this work please do let me know. 
Otherwise it will have to wait until 5.0.

Oleg

> Lock-less connection pools
> --------------------------
>
>                 Key: HTTPCORE-390
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-390
>             Project: HttpComponents HttpCore
>          Issue Type: Improvement
>          Components: HttpCore NIO
>    Affects Versions: 4.3.2
>            Reporter: Stephane Routhiau
>              Labels: concurrency, performance
>             Fix For: 5.0
>
>         Attachments: AbstractNIOConnPool.java, ConcurrentLinkedQueue.java, 
> DefaultConnectingIOReactor.java, RouteSpecificPool.java, 
> SessionRequestCallback.java, contention on lease and release.png, 
> patch-performance nio pool.patch
>
>
> AbstractNIOConnPool use a ReentrantLock for lease and release connection.
> We have noticed important contention when we try to use hundreds of 
> connexions to the same host, the lock is to vast.
> I managed to rework a part of the code so there is no more use of a 
> ReentrantLock, but use of ConcurrentHashMap and so on.
> The unit tests are ok and the load tests we have made on the patch version 
> are about 40 % faster under heavy load
> Please find attached patch file againt http-nio 4.3.2 and the modified 
> sources files of http-nio 4.3.2



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to