[undertow-dev] ProxyHandler returns 503 under load
Carter Kozak
ckozak at ckozak.net
Wed Feb 13 08:16:24 EST 2019
When the connections-per-thread limit is reached, requests result in 503 responses. Is the problem resolved by increasing the connections-per-thread value to 50 or 100?
On Wed, Feb 13, 2019, at 04:42, Jocke Eriksson wrote:
> Hello,
>
> We are trying to build an API gateway using undertow as a servlet extension, this has been working great until we started our performance tests.
> Our setup is two gateways balancing traffic towards 10+ servers and we are using JBoss EAP 7.0 We have observed that some of our requests fail with 503 response. When we get a 503 response from a request, we have also observed that it never reaches the proxy target.
> I made a small test on my machine to see if I could get the same error, to my surprise this was very easy. First I tried with the following code.
>
> public class ApiGatewayServletExtension implements ServletExtension {
>
>
> @Override
> public void handleDeployment(DeploymentInfo deploymentInfo, ServletContext servletContext) {
> LOG.info("Deploying {}...", MethodHandles.lookup().lookupClass().getSimpleName());
> deploymentInfo.addInitialHandlerChainWrapper(handler -> {
> try {
> LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient()
> .addHost(new URI("http://localhost:8282"))
> .setConnectionsPerThread(20);
> return new ProxyHandler(loadBalancer, 30000, handler);
> } catch (URISyntaxException ex) {
> throw new IllegalStateException(ex);
> }
> });
> }
> }
>
> I used JMeter with 20 threads making a simple rest GET request and after 30 seconds or so the test stopped with a 503 response.
>
> Then I created a small java application using undertow 2.0.17.Final like this.
>
> public static void main(final String[] args) {
>
>
> try {
> LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient()
> .addHost(new URI("http://localhost:8282"))
> .setConnectionsPerThread(20);
> ProxyHandler proxyHandler = new ProxyHandler(loadBalancer, 30000, ResponseCodeHandler.HANDLE_404);
>
> Undertow server = Undertow.builder()
> .addHttpListener(8080, "localhost")
> .setHandler(proxyHandler).build();
>
> server.start();
>
> } catch (Exception ex) {
> System.out.println(ex.getMessage());
> }
> }
>
> Getting the same result. I have also tried just loading the home page of one of our servers and still the same result.
>
> Any help would be very much appreciated. I have not created a bug because I'm pretty sure we are just missing something here.
>
> Regards Joakim Eriksson.
>
>
>
>
>
>
>
> _______________________________________________
> 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/20190213/71113006/attachment-0001.html
More information about the undertow-dev
mailing list