[undertow-dev] Unable to concurrently use all available IO Threads under load on Red Hat

Stuart Douglas sdouglas at redhat.com
Wed Jul 25 19:24:48 EDT 2018


The mapping is done by a hash of the remote IP+port. It sounds like maybe
this machine is allocating ports in a way that does not map well to our
hash.

Because the remote IP is the same it is really only the port that comes
into effect. The algorithm is
in org.xnio.nio.QueuedNioTcpServer#handleReady and in this case would
simplify down to:

(((C1 * 23) + P) * 23 + C2) % 8

Where C1 is a hash of the remote IP, and C2 is a hash of the local IP+port
combo.

Stuart

On Thu, Jul 26, 2018 at 3:52 AM R. Matt Barnett <barnett at rice.edu> wrote:

> I did. I set the concurrency level of ab to 128. I still see only 4
> overlaps:
>
> $ java -jar undertow-test-0.1.0-jar-with-dependencies.jar &
>
> Server started on port 8080
> 1
> 2
> 3
> 4
>
> $ netstat -t | grep apigateway_loadge | grep -c ESTABLISHED
> 126
>
>
> What is the algorithm for mapping connections to IO threads?  As a new
> Undertow user I had assumed round robin, but it sounds like this is not the
> case.
>
>
> -- Matt
>
> On 7/25/2018 11:49 AM, Bill O'Neil wrote:
>
> Did you try setting the concurrency level much higher than 8 like I
> suggested earlier? You are probably having multiple connections assigned to
> the same IO threads.
>
> On Wed, Jul 25, 2018 at 12:26 PM, R. Matt Barnett <barnett at rice.edu>
> wrote:
>
>> Corrected test to resolve test/set race.
>>
>>
>> https://gist.github.com/rmbarnett-rice/1179c4ad1d3344bb247c8b8daed3e4fa
>>
>>
>> I've also discovered this morning that I *can* see 1-8 printed on Red
>> Hat when I generate load using ab from Windows, but only 1-4 when
>> running ab on Red Hat (both locally and from a remote server).  I'm
>> wondering if perhaps there is some sort of connection reuse shenanigans
>> going on.  My assumption of the use of the -c 8 parameter was "make 8
>> sockets" but maybe not.  I'll dig in and report back.
>>
>>
>> -- Matt
>>
>>
>> On 7/24/2018 6:56 PM, R. Matt Barnett wrote:
>> > Hello,
>> >
>> > I'm experiencing an Undertow performance issue I fail to understand.  I
>> > am able to reproduce the issue with the code linked bellow. The problem
>> > is that on Red Hat (and not Windows) I'm unable to concurrently process
>> > more than 4 overlapping requests even with 8 configured IO Threads.
>> > For example, if I run the following program (1 file, 55 lines):
>> >
>> > https://gist.github.com/rmbarnett-rice/668db6b4e9f8f8da7093a3659b6ae2b5
>> >
>> > ... on Red Hat and then send requests to the server using Apache
>> > Benchmark...
>> >
>> >       > ab -n 1000 -c 8 localhost:8080/
>> >
>> > I see the following output from the Undertow process:
>> >
>> >       Server started on port 8080
>> >
>> >       1
>> >       2
>> >       3
>> >       4
>> >
>> > I believe this demonstrates that only 4 requests are ever processed in
>> > parallel.  I would expect 8.  In fact, when I run the same experiment on
>> > Windows I see the expected output of
>> >
>> >       Server started on port 8080
>> >       1
>> >       2
>> >       3
>> >       4
>> >       5
>> >       6
>> >       7
>> >       8
>> >
>> > Any thoughts as to what might explain this behavior?
>> >
>> > Best,
>> >
>> > Matt
>> >
>> > _______________________________________________
>> > undertow-dev mailing list
>> > undertow-dev at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/undertow-dev
>>
>> _______________________________________________
>> undertow-dev mailing list
>> undertow-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/undertow-dev
>>
>
>
> _______________________________________________
> 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/20180726/56cc0502/attachment.html 


More information about the undertow-dev mailing list