You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by sm...@advance-bank.de on 2001/01/30 11:14:38 UTC

NullPointerException´s and Scalability of Tomcat 3.2.1


Hi All

im currently testing tomcat 3.2.1 to check if it is suitable for a produktion
environment.
i do some load tests with ab and Curl to get a few numbers how tomcat scales
over CPU´s
and or mashines. I have to ore more apache with mod_jserv behind a lvs
loadbalancer.
every apache is configured to balance to ajpv12 traffic to two tomcat instances
on two
mashines running linux with jdk1.3.

no i started doing some basic load tests with the simple bust useful ab from the
apache
group.

first i tried to get a simple one-line jsp with 10 concurent sessions
-> everything ist fine

with 50 concurent sessions i got a lot of the follwing exeptions:

java.lang.NullPointerException
        at java.util.Hashtable.put(Hashtable.java:380)
        at
org.apache.jasper.runtime.PageContextImpl.setAttribute(PageContextImpl.java:251)
        at
org.apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:198)
        at
org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:149)
        at
org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:99)
        at
_0002ftest_0002ejsptest_jsp_1._jspService(_0002ftest_0002ejsptest_jsp_1.java:47)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)

        at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
        at org.apache.tomcat.core.Handler.service(Handler.java:286)
        at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
        at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
        at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
        at
org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)

        at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
        at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
        at java.lang.Thread.run(Thread.java:484)


in org/apache/jasper/runtime/PageContextImpl.java

i found the following
    /*
     * fields
     */

    // per Servlet state

    protected          Servlet         servlet;
    protected       ServletConfig   config;
    protected       ServletContext  context;

    protected       JspFactory     factory;

    protected       boolean        needsSession;

    protected       String         errorPageURL;

    protected       boolean        autoFlush;
    protected       int       bufferSize;

    // page scope attributes

    protected transient Hashtable  attributes = new Hashtable(16);
                                                            ^^^^^^^
    // per request state

    protected transient ServletRequest   request;
    protected transient ServletResponse response;
    protected transient Object          page;

    protected transient HttpSession      session;

    // initial output stream

    protected transient JspWriter  out;
}



######


another problem i´ve found is with tomcat configuration

When i specified a single Address to bind in the AJP12 Connector Settings in
server.xml  like

        <Connector className="org.apache.tomcat.service.PoolTcpConnector">
            <Parameter
                name="handler"

value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
            <Parameter
                name="inet"
                value="185.29.1.97"/>
            <Parameter
                name="port"
                value="8007"/>

..........


Tomcat starts and realy it binds to the specified address
but when i try to stop tomcat i get a connection refused.



in org/apache/tomcat/tasj/StopTomcat.java
i found the following

     // use Ajp12 to stop the server...
     try {
         Socket socket = new Socket("localhost", portInt);
                                    ^^^^^^^^^^^^^^^^^^^^^^
         OutputStream os=socket.getOutputStream();
         byte stopMessage[]=new byte[2];
         stopMessage[0]=(byte)254;
         stopMessage[1]=(byte)15;
         os.write( stopMessage );
         socket.close();
     } catch(Exception ex ) {
         ex.printStackTrace();
     }
    }

}


Im sorry but im not really familiar with java nor a programmer but please give
me some hints how to solve..



greetings in advance

Stefan Majer
Advance Bank AG
Putzbrunnerstrasse 71
Munich
Germany