Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Scalability of ProxyServlet$Transparent and Tomcat

(this will probably mess up the thread, I didn't received the replies
because I was on digest mode)


Thanks for the explanation,

I just made a quick try with transparent proxy on top of Jetty and it seems
to work fine, from the little I know of Jetty: lots of concurrent requests are
handled without needing a corresponding number of threads.

I think I was put a bit off track by this page about the continuation:

http://wiki.eclipse.org/Jetty/Feature/Continuations#Jetty_Continuations

it says that the Continuation mechanism would work on any servlet 3.0
container,
and since I saw some use of continuations in transparent's source,
I just assumed that it would run fine on Tomat 7.

It was probably wishful thinking, since we have to deal with Tomcat :)

Cheers,
  Gianluca


> also, the proxy servlet works well leveraging the jetty-continuations
> api which was the mechanism for having async servlets on servlet 2.5
> which is normally not possible
>
> if you are using it on tomcat then the async aspect is falling back to
> polling as opposed to true long polling

> at this point we have no plans to port the proxy servlet to use
> servlet 3.0 but I suppose we might at some point

> cheers,
> jesse

> --
> jesse mcconnell
> jesse.mcconnell@xxxxxxxxx


On Thu, Jul 26, 2012 at 11:15 AM, Joakim Erdfelt <joakim@xxxxxxxxxxx> wrote:
> Sounds like you need to ask Tomcat what is going on.
>
> We can help you sort out issue if you run the transparent proxy on jetty
> itself.
> As we ... well .. wrote the jetty server, we should know how it works inside
> out. :-)
>
> --
> Joakim Erdfelt <joakim@xxxxxxxxxxx>
> www.webtide.com
> Developer advice, services and support
> from the Jetty & CometD experts.
>
>
>
> On Thu, Jul 26, 2012 at 8:14 AM, Gian Luca Ortelli
> <gianluca.ortelli@xxxxxxxxxxx> wrote:
>>
>> Hi,
>>
>> I have set up a basic web application to try out the Transparent servlet.
>> The relevant block of my web.xml reads:
>>
>>   <servlet>
>>       <servlet-name>proxy</servlet-name>
>>
>> <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
>>       <init-param>
>>           <param-name>ProxyTo</param-name>
>>           <param-value>http://localhost:8080/</param-value>
>>       </init-param>
>>       <init-param>
>>           <param-name>Prefix</param-name>
>>           <param-value>/</param-value>
>>       </init-param>
>>       <load-on-startup>1</load-on-startup>
>>       <async-supported>true</async-supported>
>>   </servlet>
>>
>> I'm using version 8.1.1.v20120215 of jetty-servlet, and I'm deploying to
>> Tomcat 7.0.21.
>>
>> A server is listening on http://localhost:8080/, and it takes 5 seconds to
>> serve each request that it receives (the response is a few characters).
>>
>> In my tests I'm firing several simultaneous requests to the server,
>> proxied through the Transparent servlet.
>>
>> Now, from what I know about the Transparent, I would expect that Tomcat's
>> HTTP thread pool doesn't limit the number of concurrent requests; as soon as
>> a new request comes in, it should be immediately handed over to a thread of
>> Transparent's own pool, which in turn does the proxying job using
>> asynchronous IO.
>>
>> Instead, what I observe is that the size of Tomcat's pool IS the limit for
>> concurrent requests. Did I misunderstand the functioning and purpose of the
>> Transparent? Or is this just a "feature" of the combination Tomcat + Jetty
>> servlet?
>>
>> Hoping that someone will shed some light on this.
>>
>> Greetings,
>>   Gianluca
>>
>>


Back to the top