智慧校园性能优化总结
紫薇真人李万鸿
智慧校园性能优化第一阶段已经胜利完成,通过优化,响应速度普遍提升几十倍,大家在工作中探索出不少行之有效的好办法,这里对这些宝贵的经验教训做个总结,便于下一步的优化,这是集体智慧的结晶,对其他项目的开发有借鉴之用。
1.从项目管理流程把控质量提升性能
1首先在项目开发过程中,狠抓关架构设计、系统设计、数据库设计,对重要业务场景,必须要进行系统设计。其次,对已经设计好的相关设计,组织评审,可邀请架构师参与评审,进行严格把关。从根本上保证架构设计、系统设计的合理性、最优性。事先做好设计,好过等到问题再想办法解决。
2在编码阶段,进行代码走查,包括对存储过程、视图等。
2.测试过程中定位问题便于优化
1找到合适工具,如firefox、loadrunner、jmeter,好的工具能够迅速定位到问题点,能够帮忙我们有的放矢,快速优化。经过性能测试结果要定位出问题所在,盲目的优化,单个性能方面会有提升,但整体并发之后并不会有什么效果,反而可能性能会下降,所以要准确定位问题的所在点,这样优化才能有效果。
2 测试过程中,要进行最小单位测试,尽可能排除过多影响因素。例如,对应用系统的测试,首先要对外部接口进行测试。
3、前端优化
1问题定位
1. 页面请求太多。
2. Js、css、html代码冗余。
3. 图片太大、太多。
2优化方案
1. 页面中如js代码量较多时,考虑合并到js文件中,通用的方法,合并图片、压缩css、js减少请求会有明显的效果。
例如Logo图片的配置只需调用一次Api即可
2.利用Microsoft.Web.Optimization打包压缩css、js,减少资源请求次数
启用优化策略:
策略配置:
调用方法:
结果:
3页面中内容变动不大的,可以考虑通过Jquery适当在客户端添加缓存
4检查JS代码进行优化
5压缩文件,减少网络请求文件大小
6合并图片,减少请求
7去掉冗余的html标签
8使用ajax方式刷新列表页面,少用分部视图
9将样式文件放在头部
这是基本的HTML代码风格,将所有的CSS文件都放在HTML页面的头部。
10将脚本文件放在尾部
这也是基本的HTML代码风格,将所有的JavaScript文件都放在HTML页面的尾部。
11压缩JavaScript文件,或采用压缩过的js。
压缩脚本文件,删除不必要的字符,可以改善加载时间,目前有很多JavaScript文件的压缩工具,我这里有一个GUI界面的JS压缩工具供下载。
3辅助工具
火狐FireBug
4后台优化
1问题定位
1. 代码冗余、代码效率低
2. 第三方应用工具效率低下
3. 代码封装太深
4. 没有使用缓存
5. 接口效率低
6. 数据库访问慢
7. 代码质量低、
8. 业务逻辑没有优化
2优化方案
1. 寻找第三方替换方案,如转Json、修改服务接口提供方式
2. 去掉代码冗余,优化代码质量,如减少Link操作、修改字符串处理方式,减少不必要的代码声明,对于引用类型的变量不需要赋初始化值
3. 检查资源释放,如调用服务端接口时链接释放及时释放、关闭,程序线程使用情况
4. 适当添加缓存,后台代码加缓存,用memcached缓存,不经常变化的数据尽量在本地进行缓存,如数据接口调用缓存;枚举转list的方法缓存等。
简单通用缓存设计:
5.检查整体编写情况,看是否包含一些冗余的代码、声明了但没有用到的代码、多重循环的代码。
6. 优化执行效率底的代码块。如:多重if用swith代替;list为类键值对的查找用hashTable或dictionary代替;字符串拼接用StringBuilder或string.format代替;动态类型dynamic用实体类代替;减少循环调用数据库等。
7.优化业务逻辑。对业务逻辑较强的代码块,使用算法或把逻辑写入数据库存储过程的方式来减少对数据库访问次数。
8.把linq转化成纯sql查询。
9.服务器控件尽量改成JS脚本控件,减少服务器压力
10.java系统使用淘宝的FastJson。
11.根据性能测试报告,重点排查优化不达标功能模块。
12.走读代码,重点排查优化数据连接等资源释放等情况。
13.根据性能测试报告,重点关注有性能隐患的地方进一步优化处理。
14.java系统对Mybatis配置优化:缓存机制性能参数优化。
15.把soap webservice接口改为restful实现方式。
3辅助工具或方法
1. Vs自带性能检测工具
2. 手动添加代码检查逻辑处理时间进行分析
3. 添加日志输出
5数据库优化
1问题定位
SQL语句响应时间长
2优化方案
1. 减少不必要的字段返回
2. 对链接查询On条件、经常作为查询条件字段、排序字段、分组字段上面加索引。
3. 提高Sql语句质量,如并表时是union和union all的使用,在两个结果没有重复的可能时使用union all、尽量少用子查询、不要在查询条件做计算、在当前日期比较时,如果不用精切到时分秒时最好做变量声明再做比较,因为日期函数不会用到查询缓存。
4. 优化复杂的sql语句,达到最佳性能,去除in、not in 语法,用join和left join 代替可加快查询速度;去除DISTINCT的使用,用group by 代替;尽量少用子查询;数据层访问数据库时,尽量减少数据库访问次数;用explain 关键字获取执行计划,给不走索引的字段加索引。
3辅助工具
Explain查询分析器
6中间件优化
1 iis优化
1 gzip压缩
打开IIS性能工具里的“动态内容压缩”和“静态内容压缩。
2启用内容过期
对脚本,样式,图片加HttpExpire头,加上这个过期头,网站只需要第一次打开时需要下载这些网页组件,之后再打开甚至连HTTP请求都不用发起,直接在本地加载了,当然脚本和样式服务端有可能以后还会变化,我们需要利用URL重写进行脚本和样式引用的自动改名,以便在脚本和页面更新后刷新利览器缓存。
对于静态文件启用内容过期可以提高访问性能。首先网站的目录要划分合理,图片、CSS、JavaScript均放在单独目录下,然后在IIS中选择目录,点属性-HTTP头,启用内容过期,可以选择30天后过去,这样,用户浏览器将比较当前日期和截止日期,以便决定是显示缓存页还是从服务器请求更新的页,由于图片、CSS、JS通常变化较少,因此基本上都从本地缓存读取,从而加快显示速度。
4. IIS应用程序池优化
选集成模式。
2 tomcat优化
1 server.xml修改:
根据操作系统和内存、cpu的情况进行优化,如windows server2008、16G内存、2核cpu,参数如下:
<Connector port="7085"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" maxHttpHeaderSize="8192"maxThreads="1900" minSpareThreads="1000"maxSpareThreads="1900" minProcessors="1000"maxProcessors="1900" enableLookups="false"compression="on"
compressionMinSi
ze="8192"compressableMimeType="text/html,text/xml,text/javascript,t
URIEncoding="utf-8"acceptCount="1900" disableUploadTimeout="true"/>
2 catalina.sh 中设置 JAVA_OPTS参数:
SET CATALINA_OPTS= -Xms8192m -Xmx8192m -XX:NewSize=3072m
-XX:MaxNewSize=3072m
-XX:PermSize=512M -XX:MaxPermSize=512m
7 loadRunner优化
1.分别修改VUGEN和 control 二者的run time setting中的请求超时时间Preferences 中点击Options 其中有三项的参数可以根据需要修改。
2.测试时开启缓存。
版权声明:本文为博主原创文章,未经博主允许不得转载。