多个人同时访问页面出现的问题

来源:互联网 发布:淘宝上耳机单元哪来的 编辑:程序博客网 时间:2024/05/21 06:21

多个人同时访问页面出现了问题,好象是OUT   OF   MEMORY。  
  另外,有大型网站经验的朋友请谈谈注意事项。  
 单个用户运行的时候不会出错误的。  
  同时有多个用户就会出错。
  比如大数据量的数据库查询,在写代码时候要注意什么。   

最新的问题如下:  
  多个人同时点一个页面,LOG里的错误信息如下:  
   
  2006/09/05   15:08:09   ERROR   [http-8080-Processor13]   (ApplicationDispatcher.java/704)   -Servlet.service()   for   servlet   jsp   threw   exception  
  javax.servlet.jsp.JspException:   Cannot   find   bean:   "list"   in   any   scope  
  at   org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:935)  
  at   org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:232)  
  at   org.apache.jsp.jsp.qans.admin.tiles.QuickAnswerHtmlBody_jsp._jspService(QuickAnswerHtmlBody_jsp.java:382)  
  at   org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)  
  at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  at   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)  
  at   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)  
  at   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)  
  at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)  
  at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)  
  at   org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)  
  at   org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)  
  at   org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)  
  at   org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)  
  at   org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:614)  
  at   org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)  
  at   org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)  
  at   org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)  
  at   org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)  
  at   org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)  
  at   org.apache.jsp.jsp.tiles.admin.layouts.mainLayout_jsp._jspx_meth_tiles_insert_1(mainLayout_jsp.java:278)  
  at   org.apache.jsp.jsp.tiles.admin.layouts.mainLayout_jsp._jspService(mainLayout_jsp.java:146)  
  at   org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)  
  at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  at   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)  
  at   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)  
  at   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)  
  at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)  
  at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)  
  at   org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)  
  at   org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)  
  at   org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)  
  at   org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)  
  at   org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:614)  
  at   org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)  
  at   org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)  
  at   org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)  
  at   org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)  
  at   org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)  
  at   org.apache.jsp.jsp.qans.admin.main.QuickAnswerHtmlMain_jsp._jspx_meth_tiles_insert_0(QuickAnswerHtmlMain_jsp.java:146)  
  at   org.apache.jsp.jsp.qans.admin.main.QuickAnswerHtmlMain_jsp._jspService(QuickAnswerHtmlMain_jsp.java:97)  
  at   org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)  
  at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  at   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)  
  at   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)  
  at   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)  
  at   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)  
  at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)  
  at   org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)  
  at   org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)  
  at   org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)  
  at   org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)  
  at   org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)  
  at   org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)  
  at   org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)  
  at   org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)  
  at   org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)  
  at   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)  
  at   org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)  
  at   jp.co.nec.necst.ebiz.base.EbizActionServlet.doPost(EbizActionServlet.java:124)  
  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:252)  
  at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)  
  at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)  
  at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)  
  at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)  
  at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)  
  at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)  
  at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)  
  at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)  
  at   org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)  
  at   org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)  
  at   org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)  
  at   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)  
  at   java.lang.Thread.run(Thread.java:595)  
  2006/09/05   15:08:09   ERROR   [http-8080-Processor13]   (InsertTag.java/922)   -ServletException   in   '/jsp/qans/admin/tiles/QuickAnswerHtmlBody.jsp':   Cannot   find   bean:   "list"   in   any   scope  
  org.apache.jasper.JasperException:   Exception   in   JSP:   /jsp/qans/admin/tiles/QuickAnswerHtmlBody.jsp:188  
   
  185:   <div   align="right">  
  186:   <input   type="button"   class="btn"     value="&#12539;&#65405;&#65415;隠&#12539;&#65405;&#12539;&#65405;&#12539;&#65405;"   onclick="javaSrcipt:append();"   />  
  187:   </div>  
  188:   <logic:iterate   name="list"   id="list">  
  189:   <a   href="#"   onclick="JavaScript:_sortIdOnClick('<bean:write   name="list"   property="chapterId"/>');"><bean:write   property="txtChapterTitle"   name="list"   />&nbsp;</a>  
  190:    
  191:   <input   type="button"   class="btn"     value="&#12539;&#65405;尞&#12539;   onclick="JavaScript:deleted('<bean:write   name="list"   property="chapterId"   />');"   />   
 

如果你用的是   MySQL   数据库,用的是   ConnectorJ   做   JDBC   Driver,那么,请特别注意我下面说的问题:     
  在做一个数据库查询的时候,一定要通过适当的条件(或者用   LIMIT)让结果集尽量地小。比如,你一个页面要显示   20   条查询结果,就要用   LIMIT   限制结果集里只有   20   条记录。千万别不作任何限制,然后用   rs.next()   取前面的   20   条,后面的就不理它了。如果你这样做,虽然结果好像差不多,但是,JDBC   Driver   事实上在你取第一条记录的时候,就已经把结果集里所有的记录都取下来放在内存里了,很容易就   out   of   memory   了。
其实是所谓的线程安全问题。  
  比如,我在action里定义一个全局变量,  
  在很多人访问页面的时候,会有问题。  
  希望大家开发的时候注意,绝对不要用全局量。
 

1数据库连接池  
  2上传文件内存使用太大,建议用时间换取空间(解析表单域)  
  3利用js减轻服务器负担  
  4对于大字段建议用流打开不要直接写到内存里  
  5数据库查询尽量不要用union
  
6.增加Web   Container的内存。  
  我一直是Tomcat+IIS,默认Tomcat是64M内存,经常报OUT   OF   MEMORY错误,后来增加到256M就好了。
7.  多用预处理
  

再补充说明:  
  框架是:  
  spring   +   hibernate   +   structs
程序上的问题   内存泄露   出现这种情况的原因很多   比如说数据库连接没有关闭,一次性读进内存的数据太多(比如说select   *   from   table)   或者是无限的创建对象  

程序不出问题的情况下造成内存溢出无非是数据量过大,查询大批量数据时可以采用分批查询的方式。不要一次把所有数据都select出来,可以按照页面的分页进行分批次查询。


Servlet.service()   for   servlet   jsp   threw   exception  
  javax.servlet.jsp.JspException:   Cannot   find   bean:   "list"   in   any   scope  
  at   org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:935)  
  at   org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:232)  
  at   org.apache.jsp.jsp.qans.admin.tiles.QuickAnswerHtmlBody_jsp._jspService  
   
  这个是你放在application,session,requset,page中的某个范围内的Attribute的值没有  
  检查你写的页面跳转的时候是不是用的sendRidrect()或是你的存放属性的地方是不是提前关闭了   
   
缓存溢出吧  
  估计是页面数据量过大引起

原创粉丝点击