最近系统的并发量加大,导致响应速度急速下降,项目采用SSH架构,在不更改源程序的情况下,对项目进行优化,显著的提升了系统效率,大致使用了以下几项优化措施。
1。检查数据库索引,这点很重要,对程序中的大部分where条件后的字段设置索引。
2。数据库采用的Oracle9i,更改了数据库的优化模式,设置optimizer_mode=rule,基于规则的优化器模式,定期收集更新统计信息。
3。更换数据库连接池,以前项目采用DBCP连接池,在高并发的情况下,连接池工作不稳定,更换成C3P0连接池。
4。修改Hibernate参数配置,调整hibernate.jdbc.batch_size值,该值设置一次最多可以提交多少语句的上限,以前为20,更改设置为50,减少应用程序与数据库的交互次数。
5。增加hibernate.jdbc.fetch_size参数,该参数值设定Hibernate每次从数据库中提取的记录数,该值并不是越大越好,最好在50-100之间取值,具体视服务器配置而定。
当然,如果应用程序本身效率不好,代码质量不高,这些也只能是亡羊补牢的措施,要想程序高效稳定,高质量的代码是关键。
1。检查数据库索引,这点很重要,对程序中的大部分where条件后的字段设置索引。
2。数据库采用的Oracle9i,更改了数据库的优化模式,设置optimizer_mode=rule,基于规则的优化器模式,定期收集更新统计信息。
3。更换数据库连接池,以前项目采用DBCP连接池,在高并发的情况下,连接池工作不稳定,更换成C3P0连接池。
4。修改Hibernate参数配置,调整hibernate.jdbc.batch_size值,该值设置一次最多可以提交多少语句的上限,以前为20,更改设置为50,减少应用程序与数据库的交互次数。
5。增加hibernate.jdbc.fetch_size参数,该参数值设定Hibernate每次从数据库中提取的记录数,该值并不是越大越好,最好在50-100之间取值,具体视服务器配置而定。
当然,如果应用程序本身效率不好,代码质量不高,这些也只能是亡羊补牢的措施,要想程序高效稳定,高质量的代码是关键。