3 Replies Latest reply on Nov 13, 2003 7:35 PM by adrian.brock

    How much load should JMS over HTTP be able to take?

      I've been playing around with the JMS over HTTP stuff and I believe I've found an error. Part of this MAY be related to the way I'm deaing with JMS over HTTP, but there is a definite error here with respect to the way the Tomcat binding to Jboss is happening.

      I noticed that for some reason my connections to the webserver aren't being closed when I close stuff over the HTTP connection. However, eventually Tomcat will throw:

      2003-11-08 01:54:05,830 ERROR [org.apache.tomcat.util.threads.ThreadPool] All threads are busy, waiting. Please increase maxThreads or check the servlet status100 100

      When this happens, the server that is talking to JMS will die silently. I know this because I have a try/catch block around the body of the onMessage call so if something blows up, I should see some sort of error - whatever the kind.

      Any ideas?

      Nevertheless, I need to ascertain why the HTTP connection is holding the connection as that's what's holding me up. Nice to be able to get reasonably good performance off of the implementation.

        • 1. Re: How much load should JMS over HTTP be able to take?

          You'll need to play with the polling settings.

          The default settings don't actually do any real polling, instead
          the http request sits inside the server waiting for a message,
          occuping a thread.

          jbossmq-httpil.sar/META-INF/jboss-service.xml

          <!-- length of time to wait inside server -->
          60

          <!-- length of time to wait on the client before
          trying the server again -->
          0

          Regards,
          Adrian

          • 2. Re: How much load should JMS over HTTP be able to take?

            Okay Adrian, thanks for the response.

            I just want to try to understand what's happening while I'm trying to fix it.

            What you're saying is that the HTTPILServlet is basically opening a session/thread on the Tomcat instance and it will keep that open waiting for a response until it times out?

            If this is the case I have a quick question - is that the best way to do things? Wouldn't it be better to just have the client side implementation for JMS send some sort of session ID so that the HTTPILServlet doesn't have to keep a thread or any other resources sitting around to service a client? This way you can get a lot more throughput through HTTP/JMS.

            Just a thought :) I'm going to dig through the source and see if I can understand how that servlet is functioning because I may want to go another route to get the most through the HTTP binding.

            • 3. Re: How much load should JMS over HTTP be able to take?

              I don't think you understood my post.

              Default behaviour:

              client -> tomcat (waits 60 seconds for message)
              no message return to client (waits 0 seconds)
              repeat.

              Change the parameters I mentioned above.

              Regards,
              Adrian