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) % 8Where C1 is a hash of the remote IP, and C2 is a hash of the local IP+port combo.StuartOn Thu, Jul 26, 2018 at 3:52 AM R. Matt Barnett <barnett@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@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@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/undertow-dev
_______________________________________________
undertow-dev mailing list
undertow-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/undertow-dev
undertow-dev mailing list
undertow-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/undertow-dev
_______________________________________________
undertow-dev mailing list
undertow-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/undertow-dev