I did a performance test with Apache Bench on Tomcat6.0.16.
During the test,I got many error in catalina.out.
SEVERE: Caught exception (java.lang.OutOfMemoryError: Java heap space)
# ./ab -c 200 -n 300000 http://******/sample/test.jsp
Benchmarking 60.239.255.6 (be patient)
Completed 30000 requests
Completed 60000 requests
apr_recv: Connection reset by peer (104)
Total of 61428 requests completed =>OutOfMemoryError
I can't understand why OutOfMemory caused so fast.
I set session-timeout 1minute on CATALINE_BASE/conf/web.xml and
docBase/WEB-INF/web.xml like this.
web.xml ==============================================
〜
</servlet-mapping>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
<mime-mapping>
〜
=======================================================
I did the same test on the same machine with Tomcat5.5.26.
Also used the same JDK 1.6.0_06 and mod_jk 1.2.21 . Apache version is 2.0.59.
Apache and Tomcat exited the same machine.
The test finished with no error. Of course I used the same JSP.
GC parameter , maxThreads and Apache configuratiion was the same.
I got heap dump and checked top of the heap size with NetBeans
java.util.concurrent.ConcurrentHashMap$Segment size 23% / instance 22.6%
java.util.concurrent.locks.ReentrantLock$NonfairSync size 21% / instance 22.6%
java.util.concurrent.ConcurrentHashMap$HashEnry[] size 12.1% / instance 22.6%
org.apache.catalina.session.StandardSession refered
java.util.concurrent.ConcurrentHashMap$Segment.
It looks like StandardSession is loop ConcurrentHashMap$Segment.
But I am not sure how to look NetBeans IDE,perhaps mistakes this view.
As I wanted to know conserned with session , I test JSP with session
invalidated version.
I put <% session.invalidate();%> in JSP and I did test.
Result is no OutOfMemory.
So I thought this issue is conserned with session.
Do someone have any solution ?
test.jsp ==============================================
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%! String str = "Tomcat test"; %>
<html>
<head>
<title><% out.println(str); %></title>
</head>
<body>
<%=str%>
</body>
</html>
=======================================================
server.xml ==============================================
<Connector port="8082"
protocol="AJP/1.3"
enableLookups="false"
maxSavePostSize="0"
request.registerRequests="false"
useBodyEncodingForURI="true"
backlog="100"
bufferSize="-1"
tcpNoDelay="true"
maxThreads="512"
tomcatAuthentication="false" />
<Engine name="sample_Engine"
defaultHost="localhost">
<Host name="localhost"
appBase=""
autoDeploy="false"
unpackWARs="false"
errorReportValveClass=""
deployXML="false"
deployOnStartup="true" >
</Host>
</Engine>
</Service>
</Server>
=======================================================
context.xml (sample.xml)================================
<Context docBase="/***/****/sample"
cookies="true"
crossContext="false"
privileged="false"
override="false"
reloadable="false"
allowLinking="false"
caseSensitive="false"
swallowOutput="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/**/***/***/access"
suffix=".log"
pattern="common"
resolveHosts="false"
rotatable="true" />
</Context>
=======================================================
Thanks
--
Kanako Shimizu
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]