最近,在开发和优化一个报表型的Web项目,底层是Hibernate和MySQL. 当报表数据量大的时候,一个图表要花4秒以上的时间. 以下是我的分析和体会.  1.我首先需要知道哪些函数执行了多少时间,哪些sql花了多少时间.  a.最笨最简单的方法是,每一个函数的调用开始和结尾都保存开始时间startTime和结束时间endTime,  进行计算.  b.写一个“拦截器”,拦截每一个方法的执行,计算时间.    这个又太难了,没啥思路.  c.想到Hibernate查询,真正执行sql语句的方…
先大致介绍下项目的数据库信息. 数据库A:主要存放的通用的表,如User.Project.Report等. 数据库B.C.D:一个项目对应一个数据库,而且这几个项目的表是完全一样的. 数据库表的特点 A中的表:数据量几乎都比较小,比如User表中用户数,顶多也就几百上千. B中的表:X/Y/Z 3张表几乎是确定的,Data表 中的数据量比较大,几千万到上亿. 周期性的会加入一大批数据,比如,每月末增加几百万条数据. 即一般情况下,B中的表只有查询操作,而且特别是Data查询频繁且数据量很大. 建…
摘要 上一篇,一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间 ,讲述了项目优化的整体背景,重点讲述了统一显示了Web项目SQL语句的执行时间. 本篇,将重点介绍提高Web应用服务器Tomcat的内存配置,并确认配置正确的方法. 背景 这个Web报表项目,用的Linux系统,Web应用服务器使用的是Tomcat7.0. 根据已有程序开发的经验,我认为手动分配和提高Tomcat的内存,能够降低Web请求响应时间,提高系统的性能. 手动提高Tomcat内存前后的响应…
项目从初次开发到现在,已经快3年了.期间,有N个工程师参与过. 需求方面:增加减少,反反复复,无数次:人力方面:增加减少,不稳定:时间方面:功能开发着急上线,Bug开发紧急修复. 因此,代码臃肿,问题颇多. 自从毕业加入到项目,深感代码质量问题对项目开发效率的影响,因此经常会对项目进行"重构"和"优化". 主要经历了2次大的重构和无数次小的改进. 今天,特别整理下,希望今后可以做得更好. 重构事项 1.统一标准.   包.类.方法.字段等命名按照Java标准规范那样…
在上一篇文章中"一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例"提到,项目中新增几个数据库后,数据库最大连接数达到了默认的最大值100.此时,如果再创建连接,就会报错(TooManyConnections). 因此,需要手动设置MySQL的最大连接数(max_connections). 就是这么一个简单的事,花了几个小时,查询很多资料,请教好友同事"飞鸟",才搞定这个问题. 问…
最近,在开发和优化一个报表型的Web项目,底层是Hibernate和MySQL. 当报表数据量大的时候,一个图表要花4秒以上的时间. 以下是我的分析和体会.  1.我首先需要知道哪些函数执行了多少时间,哪些sql花了多少时间.  a.最笨最简单的方法是,每一个函数的调用开始和结尾都保存开始时间startTime和结束时间endTime,  进行计算.  b.写一个"拦截器",拦截每一个方法的执行,计算时间.    这个又太难了,没啥思路.  c.想到Hibernate查询,真正执行sq…
最近,项目中遇到了数据库连接不够的问题. 异常信息com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"  根据更详细的错误信息,我定位到报错的函数位置. 关键函数 /** * 判断数据库是否存在 */ public…
简介 JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求.jsp页面与业务接口方法(EJB3.Spring. Guice)的执行数量,平均执行时间,错误百分比等. 图表可以按天,周,月,年或自定义时间段查看. 使用步骤 1.下载JavaMelody. 下载地址:http://code.google.com/p/javamelody/downloads/…
1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何Java…
Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet不过现在使用的很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等.Java技术对Web领域的发展注入了强大的动力.本视频以最基础的JSP来讲解,希望童鞋们能尽快加入Java EE的大家庭. 本教程的内容有: 01_Tomcat的安装 02_简单web的发布和web项目的目录结构 03_基于虚拟路径的发…