项目开发结束了,需要做一下压力测试,就使用apache自带的ab程序进行压力测试,300个并发20000个请求,压了4组,服务器端内存就疯长到了330m,jvm一共才配置了512m,tomcat基本响应就很慢了,经过观察,330m内存基本不释放,查看自己开发的代码,没有发现不断向静态队列里不停地压对象的代码,应该基本排除是自有代码的问题,于是不停地google,发现了http://ddupnow.javaeye.com/blog/621619文章,博主的问题和我的症状很像,于是按照他的方式下载了visualvm and heapanalyzer软件,我用的是jdk1.5,发现visualvm竟然不能dump heap,于是又一番google,发现是jdk1.5的问题,于是修改成jdk1.6,这下可以到处内存堆了,然后使用heapanalyzer进行分析,dump文件很大,heapanalyzer软件几次导入都在55%的地方死掉,分析应该是jvm内存不够,所以采用命令行加参数来启动,java -Xmx1000m -Xms1000m -jar ha405.jar,ha405.jar是heapanalyzer的jar包,这下果然顺利装在dump文件,分析后和上面博主提出症状一样,也是压力测试软件频繁生成session,但session不释放问题,于是按照那篇博文的方式修改jsp文件,添加session="false"标示,再次测试,发现内存依然居高不下,分析我们的代码,我们采用的是struts架构,猜测应该是struts的控制器代码里创建了session信息,google发现http://java.chinaitlab.com/Struts/727256_2.html文章,果然是控制器里创建了session信息,由于我们的系统后台利用到了session信息,所以不能直接通过修改配置项来控制不生成session,我们的方案是集成一个控制器,通过url匹配,如果是前端页面就不创建session,如果是后台系统就创建session。
分享到:
相关推荐
- 通过性能测试工具(如JMeter、AB等)模拟用户行为,测量Tomcat的响应时间和吞吐量。 - 分析系统瓶颈,识别性能短板,如数据库查询效率、网络延迟、内存使用等。 - 运行期监控,如使用JVisualVM、JProfiler等...
例如,在 Tomcat 容器中,可以在 conf 文件夹下找到 context.xml 文件,并将 `<Context>` 修改为 `<Context sessionCookiePath="/">`。然后,在 server.xml 文件中,在 `<Connector>` 中加入 `emptySessionPath=...
除此之外,如果AB是一个Web应用,那么Tomcat或Jetty等应用服务器的配置也至关重要。这可能包括修改`server.xml`来设置监听端口、上下文路径、线程池大小等。对于负载均衡和集群部署,还需要考虑` Catalina分布式配置...
- **垃圾回收机制**:自动管理内存,减少内存泄漏问题。 #### 三、系统设计与实现 ##### 1. 需求分析 在开发之初,首先要进行需求分析,明确系统的目标用户、功能需求和技术需求。例如,对于课程作业管理系统,...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...
Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发...