My best guess as to what is happening is that Undertow closing a connection after a
request is done for some reason, and the apache attempts to re-use this connection without
realising that it is dead.
In general this should not happen, Undertow should only forcibly close a connection if it
knows that it is broken (e.g. a content length is set and the full amount of content is
not written). For a normal graceful close Undertow should be sending Connection:close
headers.
I am going to investigate some more, and see if I can figure out what is going on. It
seems unlikely but is there any chance your code forcibly closes the ServerConnection
(HttpServerExchange.getConnection()) because that could potentially cause this issue.
Setting the exchange to non-persistent after headers have been sent could also cause it.
Stuart
----- Original Message -----
From: "Edgar Espina" <espina.edgar(a)gmail.com>
To: "Stuart Douglas" <sdouglas(a)redhat.com>
Cc: undertow-dev(a)lists.jboss.org
Sent: Monday, 19 January, 2015 2:53:06 PM
Subject: Re: [undertow-dev] occasional 502 from Apache HTTP Proxy
Done, but makes no difference. Still got the 502 random errors :S
On Sun, Jan 18, 2015 at 11:13 PM, Stuart Douglas <sdouglas(a)redhat.com>
wrote:
> I had a play around with apache locally, and I could reproduce this in
> some circumstances, and it looks like we are not setting a high enough
> backlog by default.
>
> Can you try adding:
>
> undertow.setSocketOption(Options.BACKLOG, 1000)
>
> To your Undertow builder? I am going to increase this in our default
> config upstream.
>
> Hopefully this is the issue that you are running into.
>
> Stuart
>
>
> ----- Original Message -----
> > From: "Edgar Espina" <espina.edgar(a)gmail.com>
> > To: "Stuart Douglas" <sdouglas(a)redhat.com>
> > Cc: undertow-dev(a)lists.jboss.org
> > Sent: Monday, 19 January, 2015 12:10:16 PM
> > Subject: Re: [undertow-dev] occasional 502 from Apache HTTP Proxy
> >
> > It is a default undertow instance with a HTTP listener, just set work
> > threads to 200. Is there a default idle timeout? I can' tell from javadoc
> > and looking at the code.
> >
> >
> > On Sun, Jan 18, 2015 at 9:59 PM, Stuart Douglas <sdouglas(a)redhat.com>
> wrote:
> >
> > >
> > >
> > > Edgar Espina wrote:
> > >
> > >> I'm not, channel does it.
> > >>
> > >> Problem is present on both. For example, home page has a
> content-length
> > >> header but jquery.js use chunked.
> > >>
> > >
> > > In general if you are serving static resources you are better off
> setting
> > > the content length (slightly more efficient, and the browser can
> display
> > > progress on downloads).
> > >
> > >
> > >> Do I have to call .endExchange? or closing the output stream is
> enough?
> > >>
> > >
> > > Closing the output stream is enough. endExchange is automatically
> called
> > > once the call stack returns anyway, unless you have dispatched the
> exchange
> > > or started async IO.
> > >
> > > The 'connection reset by peer' error in the apache log while
reading
> the
> > > status like kinda indicates that the request does not even get to this
> > > point anyway, and the underlying TCP connection is probably being torn
> down
> > > somehow.
> > >
> > > Do you have any kind of timeouts set? If you have an idle timeout set
> on
> > > the listener there is a race where Undertow can close the channel due
> to
> > > inactivity just as the front end starts to send a request.
> > >
> > > Stuart
> > >
> > >
> > >> Thanks
> > >>
> > >> On Sun, Jan 18, 2015 at 9:48 PM, Stuart Douglas
<sdouglas(a)redhat.com
> > >> <mailto:sdouglas@redhat.com>> wrote:
> > >>
> > >> Another question, are you setting a content length on the
> responses?
> > >> If not the channel will automatically set one if the response
fits
> > >> inside a buffer, otherwise chunked encoding will be used.
> > >>
> > >> It might be helpful to know if this only happens on chunked,
fixed
> > >> length or both.
> > >>
> > >> Stuart
> > >>
> > >> Edgar Espina wrote:
> > >>
> > >> latest: 1.2.0.Beta8
> > >>
> > >> On Sun, Jan 18, 2015 at 9:42 PM, Stuart Douglas
> > >> <sdouglas(a)redhat.com <mailto:sdouglas@redhat.com>
> > >> <mailto:sdouglas@redhat.com
<mailto:sdouglas@redhat.com>>>
> wrote:
> > >>
> > >> Also what version of Undertow are you using?
> > >>
> > >> Stuart
> > >>
> > >> ----- Original Message -----
> > >> > From: "Edgar Espina"
<espina.edgar(a)gmail.com
> > >> <mailto:espina.edgar@gmail.com>
> > >> <mailto:espina.edgar@gmail.com
<mailto:espina.edgar@gmail.com
> > >> >__>>
> > >> > To: "Stuart Douglas" <sdouglas(a)redhat.com
> > >> <mailto:sdouglas@redhat.com>
> > >> <mailto:sdouglas@redhat.com
<mailto:sdouglas@redhat.com>>>
> > >> > Cc: undertow-dev(a)lists.jboss.org
> > >> <mailto:undertow-dev@lists.jboss.org>
> > >> <mailto:undertow-dev@lists.__jboss.org
> > >> <mailto:undertow-dev@lists.jboss.org>>
> > >> > Sent: Monday, 19 January, 2015 11:13:21 AM
> > >> > Subject: Re: [undertow-dev] occasional 502 from Apache
HTTP
> > >> Proxy
> > >> >
> > >> > found this in apache:
> > >> >
> > >> > (104) Connection reset by peer: proxy: error reading
status
> > >> line from
> > >> > remote server
> > >> >
> > >> > but nothing in undertow.
> > >> >
> > >> > got 502 on HTTP GET. Sometimes while calling the home
page
> / or
> > >> when page
> > >> > loads OK, got 502 on page resources (js, css, images).
> > >> >
> > >> > I call startBlocking and use the outputstream to write
the
> > >> response, when
> > >> > everything has been written I call the
"outputstream.close"
> > >> method. Do I
> > >> > need to call exchange.endExchange too?
> > >> >
> > >> > Thanks
> > >> >
> > >> > On Sun, Jan 18, 2015 at 8:52 PM, Stuart Douglas
> > >> <sdouglas(a)redhat.com <mailto:sdouglas@redhat.com>
> > >> <mailto:sdouglas@redhat.com
<mailto:sdouglas@redhat.com>>>
> wrote:
> > >> >
> > >> > > Is there any info in the log? Or is there any
specific
> type
> > >> of
> > >> request
> > >> > > that causes this?
> > >> > >
> > >> > > Stuart
> > >> > >
> > >> > >
> > >> > > ----- Original Message -----
> > >> > > > From: "Edgar Espina"
<espina.edgar(a)gmail.com
> > >> <mailto:espina.edgar@gmail.com>
> > >> <mailto:espina.edgar@gmail.com
<mailto:espina.edgar@gmail.com
> > >> >__>>
> > >> > > > To: undertow-dev(a)lists.jboss.org
> > >> <mailto:undertow-dev@lists.jboss.org>
> > >> <mailto:undertow-dev@lists.__jboss.org
> > >> <mailto:undertow-dev@lists.jboss.org>>
> > >> > > > Sent: Monday, 19 January, 2015 9:42:19 AM
> > >> > > > Subject: [undertow-dev] occasional 502 from
Apache HTTP
> > >> Proxy
> > >> > > >
> > >> > > > Hi,
> > >> > > >
> > >> > > > I've an Undertow application behind apache
reverse
> proxy,
> > >> trying to load
> > >> > > a
> > >> > > > page displays error 502 proxy error.
> > >> > > >
> > >> > > > Still couldn't find why so I wonder if any
of you find
> a
> > >> similar problem
> > >> > > with
> > >> > > > Undertow and Apache.
> > >> > > >
> > >> > > > Please note this is our first app on top of
Undertow,
> > >> existing apps
> > >> > > running
> > >> > > > on Tomcat/Jetty are OK.
> > >> > > >
> > >> > > > Appreciate any help.
> > >> > > >
> > >> > > > Thanks
> > >> > > >
> > >> > > > --
> > >> > > > edgar
> > >> > > >
> > >> > > >
_________________________________________________
> > >> > > > undertow-dev mailing list
> > >> > > > undertow-dev(a)lists.jboss.org
> > >> <mailto:undertow-dev@lists.jboss.org>
> > >> <mailto:undertow-dev@lists.__jboss.org
> > >> <mailto:undertow-dev@lists.jboss.org>>
> > >> > > >
>
https://lists.jboss.org/__mailman/listinfo/undertow-dev
> > >> <
https://lists.jboss.org/mailman/listinfo/undertow-dev>
> > >> > >
> > >> >
> > >> >
> > >> >
> > >> > --
> > >> > edgar
> > >> >
> > >>
> > >>
> > >>
> > >>
> > >> --
> > >> edgar
> > >>
> > >>
> > >>
> > >>
> > >> --
> > >> edgar
> > >>
> > >
> >
> >
> > --
> > edgar
> >
>
--
edgar