Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Jetty 9.03 - seeing maximum websocket connection limit. why?

Dear Joakim,

 

(So I upgraded from Jetty 9.0.3 to 9.4.7) 

Seems the the JettyJasperInitializer is not invoked.

Looking at this code: https://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.jetty.apache.jsp.JettyJasperInitializer

I added the part  “ // Needed to initialize JSP!  “, and it works but feels like a hack.

 

 

I thought this JasperInitializer should be automatically detected?  

 

 

Regards,

Roland

 

 

 

From: Houtman, Roland
Sent: 20 September 2017 9:33
To: JETTY user mailing list
Subject: RE: [jetty-users] Jetty 9.03 - seeing maximum websocket connection limit. why?

 

Thanks,

 

It seems the Windows 10 (LTSB – Long Term Service Branch) is the bottleneck, because someone ran it on a ‘Windows Server 2008 R2 Enterprise SP1’ and then 50 clients were able to connect instead of 35-ish. We’re going to verify that. You’re correct I meant 1.8u131.

 

I’ve done as you said, and put the Jetty 9.4.7 in place. Put all the jars (from the lib of the distribution) on the classpath and running with Java 1.8u60(serverside version comes with the old code). Other than 2 interfaces moving a method to somewhere else, compiling wasn’t the issue. But I’ve now come to the point that the webserver is running, but JSP pages fail to compile. I’ve added the code as said in the examples and here https://stackoverflow.com/questions/32583103/jsp-compilation-error-on-jetty-9-3-3 , but without success. (could it be the initializer still isn’t picked up by its annotations?)

 

[[[ Setting up the server ]]]

    // Since Jetty 9.4

    Configuration.ClassList classlist = Configuration.ClassList.setServerDefault( mServer );

    // We need to enable the AnnotationConfiguration in order to correctly set up the jsp container

    classlist.addBefore("org.eclipse.jetty.webapp.JettyWebXmlConfiguration","org.eclipse.jetty.annotations.AnnotationConfiguration" );   

    //Enable parsing of jndi-related parts of web.xml and jetty-env.xml

    classlist.addAfter("org.eclipse.jetty.webapp.FragmentConfiguration", "org.eclipse.jetty.plus.webapp.EnvConfiguration", "org.eclipse.jetty.plus.webapp.PlusConfiguration");

    ...

    // Since Jetty 9.4

    // Set the ContainerIncludeJarPattern so that jetty examines these

    // container-path jars for tlds, web-fragments etc.

    // If you omit the jar that contains the jstl .tlds, the jsp engine will

    // scan for them instead.

    mWapContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$" );

    …

   // Force temp folder

    mWapContext.setAttribute(ServletContext.TEMPDIR, mLST);

    …

    mDeployMgr.setContextAttribute(ServletContext.TEMPDIR, mLST);

 

[[[ Added to web.xml ]]]

<web-app   ……  metadata-complete="false" >

 

[[[ end ]]]   

 

 

The Exeption logged is:

 

 

WARNING: unavailable

java.lang.NullPointerException

                at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:515)

                at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)

                at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:219)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)

                at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)

                at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)

                at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)

                at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:138)

                at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:637)

                at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:498)

                at org.eclipse.jetty.servlet.ServletHolder.ensureInstance(ServletHolder.java:785)

                at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:770)

                at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:530)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

                at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)

                at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)

                at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)

                at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)

                at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)

                at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

                at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)

                at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.Server.handle(Server.java:561)

                at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:334)

                at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)

                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)

                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:104)

                at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)

                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:679)

                at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597)

                at java.lang.Thread.run(Thread.java:745)

 

Sep 20, 2017 9:25:32 AM org.eclipse.jetty.server.HttpChannel handleException

WARNING: /jws/poi.jnlp

javax.servlet.ServletException: org.apache.jasper.JasperException: Unable to compile class for JSP

                at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.Server.handle(Server.java:561)

                at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:334)

                at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)

                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)

                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:104)

                at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)

                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:679)

                at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597)

                at java.lang.Thread.run(Thread.java:745)

Caused by: org.apache.jasper.JasperException: Unable to compile class for JSP

                at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:615)

                at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)

                at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)

                at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:138)

                at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:637)

                at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:498)

                at org.eclipse.jetty.servlet.ServletHolder.ensureInstance(ServletHolder.java:785)

                at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:770)

                at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:530)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

                at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)

                at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)

                at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)

                at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)

                at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)

                at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

                at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)

                at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

                ... 10 more

Caused by: java.lang.NullPointerException

                at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:515)

                at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)

                at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:219)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)

                at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)

                ... 33 more

 

Sep 20, 2017 9:25:32 AM org.eclipse.jetty.server.handler.ErrorHandler doError

WARNING: EXCEPTION

org.apache.jasper.JasperException: Unable to compile class for JSP

                at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:615)

                at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)

                at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)

                at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)

                at org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:112)

                at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

                at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:833)

                at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

                at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)

                at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)

                at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)

                at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)

                at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)

                at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

                at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:203)

                at org.eclipse.jetty.server.Dispatcher.error(Dispatcher.java:81)

                at org.eclipse.jetty.server.handler.ErrorHandler.doError(ErrorHandler.java:119)

                at org.eclipse.jetty.server.handler.ErrorHandler.handle(ErrorHandler.java:78)

                at org.eclipse.jetty.server.Response.sendError(Response.java:655)

                at org.eclipse.jetty.server.handler.AbstractHandler.doError(AbstractHandler.java:100)

                at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1247)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)

                at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)

                at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)

                at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)

                at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)

                at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

                at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)

                at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

                at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

                at org.eclipse.jetty.server.Server.handle(Server.java:561)

                at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)

                at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)

                at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)

                at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:104)

                at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)

                at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:679)

                at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597)

                at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.NullPointerException

                at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:515)

                at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)

                at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:219)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)

                at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)

                at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)

                ... 45 more

 

 

 

 

 

 

From: jetty-users-bounces@xxxxxxxxxxx [mailto:jetty-users-bounces@xxxxxxxxxxx] On Behalf Of Joakim Erdfelt
Sent: 19 September 2017 17:58
To: JETTY user mailing list
Subject: Re: [jetty-users] Jetty 9.03 - seeing maximum websocket connection limit. why?

 

Jetty 9.0.3 is very old and represents the earliest implementations of the websocket stack.

 

Please consider using something more recent.

Especially since you are also using HTTPS (TLS/SSL) as you have an obligation to keep your Jetty and JVM up to date to maintain compatibility with the quickly evolving TLS/SSL landscape.

 

Jetty 9.4.7.v20170914 was just released.

 

Java 1.8u133 is odd, that doesn't look right (cannot find a Java release with that update number)

 

Release notes for 1.8u131 says it expired July 18, 2017

Release notes for 1.8u141 says it will expire next month on Oct 17, 2017

 

Also, since you stated you are running on Windows 10, keep in mind that many Windows network security tools / firewalls will get in your way and limit/prevent behaviors you might be attempting to rely on.

 


Joakim Erdfelt / joakim@xxxxxxxxxxx

 

On Tue, Sep 19, 2017 at 5:10 AM, Houtman, Roland <Roland.Houtman@xxxxxxxxxxxxxxx> wrote:

Hi All,

 

We’re running

  1x Windows 10 inside virtualBox for the server instance 

  3x Windows 10 on a physical machine to run 25 client instances each

 Java 1.8u133 with 2GB ram.

 Jetty 9.03

 

We’re connecting software which opens per instance:

-          two websockets, and

-          some servlets for listing folder content which is invoked regularly. And

-          a servlet for downloading files.

all via HTTPS

When opening about 40 client instances,

Then, setting up the websocket fails more and more. With many tries I got to 52 client software instances running.

The server software is still having 1 GB free heapspace. And no noticeable CPU usage

Which machine the client software runs from(i.e. either single client instance running,or 25 instances running), has no impact on success rate.

 

Does anyone know why this limit is surfacing?

I already read somewhere to increase the QueuedThreadPool. I set it (from default 200) to 750, but there was no noticeable difference.

 

 

Kind regards,

Roland


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

 


Back to the top