最近,项目中遇到了数据库连接不够的问题. 异常信息com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"  根据更详细的错误信息,我定位到报错的函数位置. 关键函数 /** * 判断数据库是否存在 */ public…
先大致介绍下项目的数据库信息. 数据库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内存前后的响应…
在上一篇文章中"一个Web报表项目的性能分析和优化实践(二):MySQL数据库连接不够用(TooManyConnections)问题的一次分析和解决案例"提到,项目中新增几个数据库后,数据库最大连接数达到了默认的最大值100.此时,如果再创建连接,就会报错(TooManyConnections). 因此,需要手动设置MySQL的最大连接数(max_connections). 就是这么一个简单的事,花了几个小时,查询很多资料,请教好友同事"飞鸟",才搞定这个问题. 问…
项目从初次开发到现在,已经快3年了.期间,有N个工程师参与过. 需求方面:增加减少,反反复复,无数次:人力方面:增加减少,不稳定:时间方面:功能开发着急上线,Bug开发紧急修复. 因此,代码臃肿,问题颇多. 自从毕业加入到项目,深感代码质量问题对项目开发效率的影响,因此经常会对项目进行"重构"和"优化". 主要经历了2次大的重构和无数次小的改进. 今天,特别整理下,希望今后可以做得更好. 重构事项 1.统一标准.   包.类.方法.字段等命名按照Java标准规范那样…
最近,在开发和优化一个报表型的Web项目,底层是Hibernate和MySQL. 当报表数据量大的时候,一个图表要花4秒以上的时间. 以下是我的分析和体会.  1.我首先需要知道哪些函数执行了多少时间,哪些sql花了多少时间.  a.最笨最简单的方法是,每一个函数的调用开始和结尾都保存开始时间startTime和结束时间endTime,  进行计算.  b.写一个“拦截器”,拦截每一个方法的执行,计算时间.    这个又太难了,没啥思路.  c.想到Hibernate查询,真正执行sql语句的方…
最近,在开发和优化一个报表型的Web项目,底层是Hibernate和MySQL. 当报表数据量大的时候,一个图表要花4秒以上的时间. 以下是我的分析和体会.  1.我首先需要知道哪些函数执行了多少时间,哪些sql花了多少时间.  a.最笨最简单的方法是,每一个函数的调用开始和结尾都保存开始时间startTime和结束时间endTime,  进行计算.  b.写一个"拦截器",拦截每一个方法的执行,计算时间.    这个又太难了,没啥思路.  c.想到Hibernate查询,真正执行sq…
简介 JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求.jsp页面与业务接口方法(EJB3.Spring. Guice)的执行数量,平均执行时间,错误百分比等. 图表可以按天,周,月,年或自定义时间段查看. 使用步骤 1.下载JavaMelody. 下载地址:http://code.google.com/p/javamelody/downloads/…
随着国内Golang的火爆,phper的生存压力越来越大,在一次内部技术讨论中,gopher甚至提出,要什么php,写php的全部开掉,唉,码农何苦为难码农. 本文试图寻找一种有效实践,减少php web程序和golang之间的性能差距,摆脱php在公司往后只能写后台的悲惨命运. 做优化的思路 1.了解php语言特性 2.了解php的执行过程 3.压测分析性能 语言特性 PHP被称为脚本语言或解释型语言,它没有被直接编译为机器指令,而是编译为一种中间代码的形式,无法直接在CPU上执行. 所以PH…
首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一部分,为App提供统一的网络服务: 1Native端的网络服务 Native模块是携程的核心业务模块(酒店.机票.火车票.攻略等),Native模块的网络服务主要通过TCP连接实现,而非常见的Restful HTTP API那种HTTP连接,只有少数轻量级服务使用HTTP接口作为补充. TCP连接网络服务模…