应用系统项目优化方案研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用系统项目优化方案研究
版本:1.0
文档描述
文档变更
目录
1引言 (6)
1.1背景 (6)
1.2目的 (6)
1.3术语缩略语 (6)
1.4参考资料 (7)
1.5适用人群 (7)
2现状分析 (8)
3调优总体方案汇总 (9)
3.1应用程序调优(目前采用) (9)
3.1.1Java代码优化 (9)
3.1.2页面代码优化 (9)
3.1.3Sql语句优化(V2.2) (9)
3.1.4应用架构代码优化 (9)
3.2容器调优(目前采用) (9)
3.2.1应用服务器优化(weblogic优化) (9)
3.2.2JVM优化 (12)
3.3数据库调优(目前采用) (13)
3.3.1合理建立数据库 (13)
3.3.2SQL语句的优化 (13)
3.3.3数据库对象存储方式的优化 (13)
3.3.4内存的优化 (13)
3.3.5I/O 优化 (13)
3.3.6使用大表分区技术(采用) (13)
3.3.7优化回滚段设计 (13)
3.3.8优化重做日志文件 (13)
3.4操作系统调优 (13)
3.5性能监控 (13)
3.5.1操作系统监控 (13)
3.5.2数据库监控 (13)
3.5.3中间件监控 (13)
3.5.4代码监控 (14)
3.5.5业务监控 (14)
3.6拆分与扩展 (14)
3.6.1硬件增加 (14)
3.6.2应用系统拆分 (14)
3.6.3业务拆分 (14)
3.6.4数据分割 (15)
3.7接口优化 (16)
4目前方案 (17)
1引言
1.1 背景
系统的数据量增长越来越快,系统的瓶颈问题越来越严重,影响了系统的正常使用,导致用户对系统操作方面非常不满意。
系统在前期已经进行过一些优化:
1. 系统内部优化:页面框架变更、查询功能优化、sql表中加入索引等常规优化
2. 组件级调优:数据库、中间件一些常用参数的配置
取得一些效果,但在数据量成级数增长后,需要一些系统性的全面优化方案,以解决系统性能问题。
1.2 目的
本文主要是针对系统的一个整体的优化,不涉及代码级别的。
1.3 术语缩略语
1.4 参考资料
1.5 适用人群
项目管理人员、架构人员、配置管理人员、开发人员
2现状分析
在系统缓慢的4.11抓取当天的日志请求(POST)纪录,小时为单位,提取大于8秒请求纪录:
每个小时很平均地分布着一些8秒以上的请求,表明系统有一些瓶颈点还没有被优化。
3调优总体方案汇总
3.1 应用程序调优(目前采用)
应用程序代码的性能占总体性能的80%,代码写得好坏决定了系统是否能够正常运营。
主要有以下几部分优化工作。
3.1.1 Java代码优化
3.1.2 页面代码优化
3.1.3 Sql语句优化(V2.2)
3.1.4 应用架构代码优化
分页处理优化、本地缓存应用
3.2 容器调优(目前采用)
3.2.1 应用服务器优化(weblogic优化)
3.2.1.1 设置JDK内存
修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd文件:修改前:
修改后:
说明:具体修改值根据实际物理内存确定
-Xmx3550m:设置JVM最大堆内存为3550M。
-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次JVM动态分配内存所浪费的时间。
-XX:PermSize=256M:设置堆内存持久代初始值为256M。(貌似是Eclipse等IDE 的初始化参数)
-XX:MaxPermSize=512M:设置持久代最大值为512M。
32位操作JDK内存系统:最大可设置2G,如果设置过大,会导致服务无法启动 64位操作JDK内存系统:最大设置为物理内存的60~80%
3.2.1.2 设置线程数
修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd中在JAVA_OPTIONS中添加如下:
说明:
JDK5.0版本以后每个线程栈大小为1M,但是操作系统对一个进程内的线程数还是有限制的,不能无限生成。32位操作系统根据JVM最大堆内存设置;64位操作系统经验值在3000~5000左右。
3.2.1.3 数据库连接池连接数设置
受Oracle数据库连接数的影响,可以参照同一时间连接数据库的用户数量,进行设置,数据库的最大连接数不能小于高峰时期同一时间连接用户的数量。点击数据源,进入后选择连接池,初始默认值为:
更改为:
说明:
设置前得设置数据库的最大并发线程数(下面有介绍Oracle数据库线程数设置方法),因为weblogic节点的连接池最大连接数之和不能大于数据库的最大线程数。
初始容量:要在创建连接池时创建的物理连接数。如果无法创建这一数量的连接,创建此连接池的操作将会失败。此连接数也是连接池将保持的最小可用物理连接数。
最大容量:此连接池可容纳的最大物理连接数。