读书人

Servlet500并发量时出现的有关问题

发布时间: 2011-12-08 21:33:54 作者: rapoo

Servlet500并发量时出现的问题
下面是Servlet的代码(很简单):
public class Receive extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

String msg=null;
InputStream is=request.getInputStream();
DataInputStream dis=new DataInputStream(is);
msg=dis.readUTF();
is.close();
dis.close();
}
}
WEB服务器:Tomcat5.028
系统:W2003

我用Microsoft Web Application Strees Tool 做了一个简单的压力测试,并发设为500

出现如下错误:
2007-01-20 15:04:40 StandardWrapperValve[Receive]: Servlet.service() for servlet Receive threw exception
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:747)
at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:777)
at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:710)
at org.apache.coyote.Request.doRead(Request.java:429)
at org.apache.coyote.tomcat5.InputBuffer.realReadBytes(InputBuffer.java:290)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:374)
at org.apache.coyote.tomcat5.InputBuffer.read(InputBuffer.java:305)
at org.apache.coyote.tomcat5.CoyoteInputStream.read(CoyoteInputStream.java:179)
at java.io.DataInputStream.readFully(DataInputStream.java:266)
at java.io.DataInputStream.readUTF(DataInputStream.java:639)
at java.io.DataInputStream.readUTF(DataInputStream.java:610)
at com.qytx.servlet.Receive.doPost(Receive.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)


at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)

小弟向高人请教原因.有同样问题者可以一起讨论


[解决办法]
不懂,帮你UP

有没有数据库连接,如果有,可以改成连接池!
[解决办法]
Socket出现异常,估计是你的CPU跟不上了,呵呵
[解决办法]
程序没问题,提高服务器性能试试
[解决办法]
不懂,帮你顶
[解决办法]
我也遇到此问题了
[解决办法]
并发500,能撑成这样,已经很不错了。
你的CPU的L2 CACHE不会超过512K吧?
L1 CACHE不会超过128K吧?

你的TOMCAT有进行专门的优化吗?
你的OS也只是为了。NET而设计的SERVER吧?

读书人网 >Java Web开发

热点推荐