收藏 分销(赏)

性能优化与技巧.pptx

上传人:仙人****88 文档编号:14118835 上传时间:2026-06-26 格式:PPTX 页数:46 大小:1.76MB 下载积分:10 金币
下载 相关 举报
性能优化与技巧.pptx_第1页
第1页 / 共46页
性能优化与技巧.pptx_第2页
第2页 / 共46页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2012/8/21,#,性能优化与技巧,李攀,2012-08-20,性能优化,性能优化是一个较复杂的过程,出现性能瓶颈的原因有很多,有代码的问题,也有部署上的问题。,对于公司目前的项目而言,并发低于,500,,出现性能的问题,多是由于项目自身的代码逻辑不合理或负载均衡问题引起的。,性能优化要从平时做起,从每一个语句优化起。以下是我结合玉林、鼓楼现场的问题介绍一下性能优化中的一些经验。,性能优化介绍,定位性能瓶颈,性能问题解决办法,定位性能瓶颈,性能问题解决办法,定位性能瓶颈,定位性能的点,问题是指数据库还是,WEB,了解你的系统并发数,了解系统最常使用或瓶颈的模块,分析影响系统性能的问题,定位性能瓶颈,-,定位性能瓶颈点,WEB,WEB,服务器的,CPU,、内存,容器配置是否正常,包括容器的内存、并发最大线程数,看,LOG,日志,检查,TOMCAT,或,WEBSPHERE,的日志,通过容器自带的控制台观察并发数,如,TOMCAT,有,STATUS,模块,WEB,是否存在宕机或响应异常缓慢,记录常用模块的响应时间,数据库,数据库服务器的,CPU,、内存,查看数据库的配置参数,最大连接数,实际的连接数,通过数据库的工具查询最近最耗性能的,SQL,如果,WEB,比较慢,通过数据库的连接工具查询一下数据库,看看查询的速度慢不慢,负载均衡,查看负载均衡的日志信息,通过负载均衡访问系统与直接通过具体的,WEB,服务器访问,直观感受,判断性能瓶颈,定位性能瓶颈,-,系统的并发数,软件统计,APACHE STATUS,模块,TOMCAT,的,STATUS,模块,通过,WINDOWS,命令实现:,netstat a,自身监控,这个是定位的最好办法,易于控制,了解同一时刻点,在线的用户数,了解高峰的区间段,登录的用户次数,定位性能瓶颈,-,最常使用或瓶颈的模块,现场走访,通过走访的方式了解用户的使用习惯,通过数据库的语句进行监控,这个难度比较的大,软件记录,通过容器的日志文件,某些直接影响宕机的问题,但很难定位的,可以通过访问的入口进行定位,定期存入数据库或文本文件,如徐医现场,定位性能瓶颈,-,分析影响系统性能的问题,使用频率高,系统使用频率高的模块,如果对数据实时更新的频率要求不高,要重点优化,通过缓存的方式。,尤其是后台应用程序,如昆山现场居民信息的数据迁移,一条记录的处理时间是,0.05,秒,感觉上会比较的快,但算下来,,1,秒只能处理,20,条。,使用频率低,对于使用频率低的模块,要定位此模块对系统的影响程度,从前端体验和后台代码两个层次来定位,如鼓楼现场的报表导入导出,归档动作。,定位性能瓶颈,性能问题解决办法,性能问题的解决办法,WEB,的配置,负载均衡,数据库的配置,代码的审查及缓存的引入,性能问题的解决办法,WEB,的配置,负载均衡,数据库的配置,代码的审查及缓存的引入,容器的配置,-WEB,配置,容器内存的配置,容器并发数的配置,关掉容器不需要的服务,减少容器的负载,容器的特殊化配置,数据库连接池的配置,日志的配置,负载均衡配置,容器的配置,-WEB,配置,容器的运行如果是,TOMCAT,一定要选择安装版的,TOMCAT,,解压版的,TOMCAT,在启动时,会以命令行的方式输出日志,如果容器不最小化,会极大的影响系统的性能。,容器的配置,-WEB,配置,容器的配置,-WEB,配置,推荐使用,APACHE,的数据库连接池,不要使用,C3P0,的连接池。根据之前的经验,,C3P0,连接的效率比较的低。,了解数据库连接池各项参数的含义。,maxActive,The maximum number of active connections that can be allocated from this pool at the same time,or negative for no limit,initialSize,The initial number of connections that are created when the pool is started.,容器的配置,-WEB,配置,maxIdle,The maximum number of connections that can remain idle in the pool,without extra ones being destroyed,or negative for no limit.,maxWait,The maximum number of milliseconds that the pool will wait(when there are no available connections)for a connection to be returned before throwing an exception,or=0 to wait indefinitely.,minIdle,The minimum number of active connections that can remain idle in the pool,without extra ones being created when the evictor runs,or 0 to create none.,容器的配置,-WEB,配置,如果涉及到负载均衡,需要注意,最大的活动数,不应该大于数据库的最大连接数,每台机器的最大空闲数不宜过多,最小空闲数也不宜过小,过大会导致数据库连接的浪费,过小会导致连接池不停的去向数据库发起连接。,对于目前的,EMR,项目而言,最大的空闲数,100,,最小空闲数,50,容器的配置,-WEB,配置,日志的配置分为两块:,1,、系统中,LOG4J,的日志配置,对于负载量大的应用,该日志的级别需要配置为,ERROR,级别,该级别能够避免较多的日志输出,减少对于磁盘,IO,的读写操作。,2,、,HIBERNATE,的日志配置,要把,SHOW_SQL,关掉,容器的配置,-,负载均衡配置,APACHE,徐医、玉林现场已经启用,适用于中小型的医院,并发量小于,400,部分,EMR,系统无法正常的使用,尚未定位到原因。,NGINX,适用于大型的应用,在,EMR,中没有成功的应用。,重定向,在鼓楼现场得到了应用,负载压力均衡分配,分配前自动判断,WEB,是否可用,进程监控,监控,TOMCAT,进程,如果出现了宕机,自动进行重启。,性能问题的解决办法,WEB,的配置,负载均衡,数据库的配置,代码的审查及缓存的引入,数据库的配置,数据库的最大连接数配置,数据库内存的配置,数据库会话的跟踪,日常维护的注意事项,数据库配置,-,最大连接数,ORACLE,修改最大连接数后需要重启数据库才能启用。,数据库配置,-,内存的配置,数据库配置,-,数据库会话的跟踪,控制台,控制台,127.0.0.1:1158/em,工具,ORACEL SQL DEVELOPER,SQL,SELECT*FROM V$SESSION,命令,DB2,基于操作系统的命令行,,LIST APPLICATIONS,数据库配置,-,数据库会话的跟踪,数据库配置,-,数据库日常维护,操作,SQL,对于,ORACLE,维护,执行操作时,要避免使用,FOR UPDATE,,这样做会直接导致系统锁表,其他需要这个资源的都会处于等待的状态,执行完毕的,SQL,一定要做,COMMIT,或,ROLLBACK,操作,备份,不要在系统运行的时候进行备份,参数修改,修改完数据库的相应参数后,要注意及时的重启,如果不重启,部分参数是无法生效。,性能问题的解决办法,WEB,的配置,负载均衡,数据库的配置,代码的审查及缓存的引入,代码走查,代码性能,框架的选择,事务的管理,对于多个连接池的问题,性能优化,模块独立,对接程序与,WEB,程序的分离,后台统计或定时任务与系统的分离,如质控,统计报表,定时器的选择,缓存引入,MEMCACHE,,适用于分布式的系统,系统自身的,SESSION,或,APPLICATOIN,存储,对性能影响较大,代码走查,-,代码性能,框架的选择,,HIBERNATE,在级联的对象处理过程中,优势较为明显,通过对象的关联可以少写很多的语句,IBATIS,适用于级联度不高或语句复杂的场景。比较适合于做后台的应用程序。性能较,HIBERNATE,要高。,代码走查,-,事务管理,ISOLATION_READ_UNCOMMITTED,:这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。,ISOLATION_READ_COMMITTED,:,保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据,ISOLATION_REPEATABLE_READ,:,这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生,(,不可重复读,),。,ISOLATION_SERIALIZABLE,这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻像读。,代码走查,-,事务管理,WEB,代码一层必须很好的控制事务的级别,对于增、删、改的动作,需要加以事务,其他的按照只读的模式进行控制,需要对代码的最底层进行封装,要避免使用原生态的,OPENSESSION,的方式,一旦忘记关闭,将会一直卡在数据库的连接上。,代码走查,-,事务管理,目前,EMR,的事务管理,代码走查,-,多连接池的问题,WEB,项目要尽量避免采用多个连接池,一个连接池相当于是多个后台的应用程序,需要与数据库进行,TCP,通讯,维护数据库的连接,可将与第三方库部署单独的服务,通过调用,WEBSERVICE,服务的方式来实现与多个数据库交互。,举例:,EHR,项目中有很多个前置库,在保存数据结果时,需要将数据存入第三方前置库,这样的数据库多达十几个,在保存的时候可以考虑把这块写成公共的服务,以减少对于,WEB,项目的压力。,代码走查,-,性能优化,JAVA,减少,JAVA,方法反射的应用,这块相当的消耗性能。,关闭不用的流对象,PRINTERWRITER,对于,WEB,项目中的,PROPERTIES,文件,不要每次都去解析配置,减少效率。,查询列表对象前,不要先,NEW,一个数组出来,任务执行的频率和时间点,代码走查,-,性能优化,SQL,合理使用延迟加载功能,在建立视图的时候需要使用,有些对象是可以考虑直接使用延迟加载来实现的,通过,HQL,查询时,对于一些复杂的关联要考虑语句的拆分,对于更新,要尽可能的减少,SQL,语句的执行数量,适当的使用缓存,单个对象查询时,不要通过,LIST,的方式来实现,代码走查,-,性能优化,注意查询的结果集数量,此前在查询,CHILD,时,没有加筛选的条件,代码走查,-,性能优化,对于科室信息,可以考虑通过延迟加载的功能实现,代码走查,-,性能优化,代码走查,-,模块独立,对接程序的分离,很重要,尤其是做负载均衡的时候,如果两个包中都有对接是一块极大的性能浪费,同时对接的程序分离,有利于后续代码的调整,不至于影响到,WEB,。,模块独立需要更多的使用,JAVA,后台应用程序,不管是从性能上还是监控上看起来会比,WEB,端的程序更直观,如昆山的数据采集、鼓楼的数据同步,代码走查,-,模块独立,第三方定时器,目前主流用的是,SPRING,定时器,但这个定时器在,WEB,容器中运行时会出现较多的异常情况:,1,、如果前一个任务未执行完时,后一个线程启动,,有时,会造成定时器宕机,不再运行。,2,、实现,RUN,方法时,其中一定要加最大的异常捕获,一旦有异常招聘,定时器将不再运行。,3,、自动宕机,原因不明。,代码走查,-,模块独立,自身定时器:,1,、基于,THREAD,的开发,通过定期,SLEEP,的方式进行,2,、每次执行时,先执行任务,当无新的任务时,才启动,SLEEP,,这样执行效率也比较的高,不会存在任务执行一半就执行休眠。,代码走查,-,模块独立,代码走查,-,缓存的引入,MEMCACHE,是一种分布式的内存组件,支持分布式的部署,代码走查,-,缓存的引入,1,、要对不变的数据进行缓存,不要每次都查询数据库,2,、对于经常变动但消耗资源较大的模块,可以按时进行刷新,代码走查,-,缓存的引入,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服