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

Zoltan Farkas updated CAMEL-10240:
----------------------------------
    Description: 
In CamelHttpClient a default threadpool is being created with a hardcoded size 
of 16:
{code}
    @Override
    protected void doStart() throws Exception {
        if (!hasThreadPool()) {
            // if there is no thread pool then create a default thread pool 
using daemon threads
            QueuedThreadPool qtp = new QueuedThreadPool();
            // 16 max threads is the default in the http client
            qtp.setMaxThreads(16);
            qtp.setDaemon(true);
            // let the thread names indicate they are from the client
            qtp.setName("CamelJettyClient(" + 
ObjectHelper.getIdentityHashCode(this) + ")");
            setThreadPoolOrExecutor(qtp);
        }
        super.doStart();
    }
{code}

this configuration does not work because number of selectors is calculated 
relative to the number of CPUs in HttpClientTransportOverHTTP:

{code}
   public HttpClientTransportOverHTTP()
    {
        this(Math.max(1, Runtime.getRuntime().availableProcessors() / 2));
    }
{code}

As a result by default camel simply hangs on these systems...

It would be nice if CamelHttpClient would have a constructor that set the 
HttpClientTransport or at least the number of selectors.

  was:
In CamelHttpClient a default threadpool is being created with a hardcoded size 
of 16:
{code}
    @Override
    protected void doStart() throws Exception {
        if (!hasThreadPool()) {
            // if there is no thread pool then create a default thread pool 
using daemon threads
            QueuedThreadPool qtp = new QueuedThreadPool();
            // 16 max threads is the default in the http client
            qtp.setMaxThreads(16);
            qtp.setDaemon(true);
            // let the thread names indicate they are from the client
            qtp.setName("CamelJettyClient(" + 
ObjectHelper.getIdentityHashCode(this) + ")");
            setThreadPoolOrExecutor(qtp);
        }
        super.doStart();
    }
{code}

this configuration does not work because number of selectors is calculated 
relative to the number of CPUs in HttpClientTransportOverHTTP:

{code}
   public HttpClientTransportOverHTTP()
    {
        this(Math.max(1, Runtime.getRuntime().availableProcessors() / 2));
    }
{code}

As a result by default camel simply hangs on these systems...


> CamelHttpClient default pool size does not work on system with large number 
> of cpus
> -----------------------------------------------------------------------------------
>
>                 Key: CAMEL-10240
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10240
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jetty
>    Affects Versions: 2.17.2
>            Reporter: Zoltan Farkas
>
> In CamelHttpClient a default threadpool is being created with a hardcoded 
> size of 16:
> {code}
>     @Override
>     protected void doStart() throws Exception {
>         if (!hasThreadPool()) {
>             // if there is no thread pool then create a default thread pool 
> using daemon threads
>             QueuedThreadPool qtp = new QueuedThreadPool();
>             // 16 max threads is the default in the http client
>             qtp.setMaxThreads(16);
>             qtp.setDaemon(true);
>             // let the thread names indicate they are from the client
>             qtp.setName("CamelJettyClient(" + 
> ObjectHelper.getIdentityHashCode(this) + ")");
>             setThreadPoolOrExecutor(qtp);
>         }
>         super.doStart();
>     }
> {code}
> this configuration does not work because number of selectors is calculated 
> relative to the number of CPUs in HttpClientTransportOverHTTP:
> {code}
>    public HttpClientTransportOverHTTP()
>     {
>         this(Math.max(1, Runtime.getRuntime().availableProcessors() / 2));
>     }
> {code}
> As a result by default camel simply hangs on these systems...
> It would be nice if CamelHttpClient would have a constructor that set the 
> HttpClientTransport or at least the number of selectors.



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

Reply via email to