多个人同时访问页面出现的问题
来源:互联网 发布:淘宝上耳机单元哪来的 编辑:程序博客网 时间: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="・スヌ隠・ス・ス・ス" 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" /> </a>
190:
191: <input type="button" class="btn" value="・ス尞・ 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()或是你的存放属性的地方是不是提前关闭了
缓存溢出吧
估计是页面数据量过大引起
- 多个人同时访问页面出现的问题
- AngularJS页面访问时出现页面闪烁问题的解决
- 访问ASP.NET页面时候出现权限问题的解决
- iOS避免出现多控件同时点击的问题
- flex 同时访问数据的冲突问题
- springmvc出现页面引用的js,css等静态资源访问出现404问题
- jsp写的页面,内网访问没有问题,外网访问用户访问权限出现问题
- 页面出现的问题记录
- Ajax、JS 前台页面访问后台出现乱码问题
- 个人热点蓝条出现和消失时,页面下压和恢复导致页面混乱及蓝条下压页面底部控件看不到的问题
- JSP编写访问当前网站页面以及子页面子的访问次数同时总访问次数自加
- 电脑里同时安装多个版本的JDK可能出现的问题
- 解决双网卡机器同时访问内外网的问题
- 记录ICallbackEventHandler 同时并发访问容易引发的问题
- SQL中union和多个order by同时出现的问题
- 关于一个android工程同时使用多个工程库,在编译时出现的问题
- iOS中防止多个按钮同时点击出现的问题
- mySql与WampServer同时安装时出现的问题
- typedef用法详解
- linux下u盘使用(转贴)
- "卡秀"开发总结(NOKIA平台J2ME APP)
- FreeBSD的管理小技巧
- VC插件集
- 多个人同时访问页面出现的问题
- STL中map的使用
- 黑客实战技术
- 这是什么?我的书库啦!
- Linux下syslog日志函数使用
- URL重写,静态地址映射,asp.net URL重写,URLRewriter.dll下载,URLRewriter,URLRewriter下载,URL重写学习(终级篇)
- 10.18 十月桂花香
- MySQL用户授权
- SQL Server Configuration Manager的使用