[undertow-dev] Is a large number of IO threads acceptable?

Chandru chandru.in at gmail.com
Fri Jul 8 08:46:32 EDT 2016


Given every request requires a blocking IO call through JDBC, doesn't using
worker pool still boil down to thread per request, as requests will be
queued when all threads in the worker pool are blocked on JDBC?

--
Chandra Sekar.S

On Fri, Jul 8, 2016 at 6:10 PM, Bill O'Neil <bill at dartalley.com> wrote:

> The cost of switching threads is fairly negligible. If you are concerned
> about that level of performance then you are more likely to run into issues
> using the on thread per connection model. If you use the 1 thread per
> connection model you can only have that number of HTTP clients connected to
> your web server at any given time. However with the IO / Worker thread
> model you can have a low number of IO threads that accept a very large
> number of concurrent connections which then queue up all of the blocking
> requests for the workers to handle.
>
> The thread per request model is like going back in time to tomcat days
> where every webserver gets configured with hundreds to thousands of threads.
>
> However if you don't have a higher number of concurrent users it
> realistically shouldn't matter which way you choose. Just keep in mind the
> thread per request model doesn't scale as far when you have blocking work.
>
> On Fri, Jul 8, 2016 at 8:31 AM, Chandru <chandru.in at gmail.com> wrote:
>
>> My line of thought was, if every request requires a blocking DB call, why
>> incur the cost of switching threads within a request, if I can instead
>> simply increase the number of IO threads without any adverse effect.
>>
>> --
>> Chandra Sekar.S
>>
>> On Fri, Jul 8, 2016 at 5:54 PM, Bill O'Neil <bill at dartalley.com> wrote:
>>
>>> This is exactly what the worker thread pool is built for why would you
>>> want to use the IO threads instead? The IO threads are for reading /
>>> writing to the socket of the HTTP request. All blocking operations SHOULD
>>> be dispatched to worker threads.
>>>
>>> On Fri, Jul 8, 2016 at 8:20 AM, Chandru <chandru.in at gmail.com> wrote:
>>>
>>>> If I have a HTTP service where every request requires a blocking JDBC
>>>> call, is it acceptable to increase the number of IO threads to a large
>>>> value (say, 10*cores) instead of dispatching to worker thread pool on each
>>>> request?
>>>>
>>>> Will configuring such a large number of IO threads lead to any adverse
>>>> effect on throughput or latency?
>>>>
>>>> --
>>>> Chandra Sekar.S
>>>>
>>>> _______________________________________________
>>>> undertow-dev mailing list
>>>> undertow-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/undertow-dev
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/undertow-dev/attachments/20160708/5b851ab7/attachment.html 


More information about the undertow-dev mailing list