• 1. Java应用性能&内存调优 - Jprofile5实战庄易 zhuangyi@taobao.com
  • 2. Java应用性能&内存性能:Taobao每天的IPV(itemDetail)超过了1亿每天,Detail机器每天访问量60万,应用服务器群组上千台,并且还在不断增长。---每一个用户频繁访问点的优化都能极大地提高线上服务器群组的支撑访问量。 内存:Taobao应用跟着需求在不断的演化,增加着新的特性,内存的需求必定不断增长,有效控制总体内存使用是非常重要的。 内存Cache有效使用能够提高程序性能,但是内存里静态缓存载入过多会导致jvm频繁GC(不断试图获取足够的内存运行空间),会导致性能急剧下降。
  • 3. 系统性能与调优的关系调优的作用:在当前的系统基础上,找出性能(内存)瓶颈点,寻找解决方案(二八规则:百分二十以下的代码消耗了80%的系统性能) 系统性能:一个高性能的应用不是靠后期调优调出来的。以下要素必不可少: 一个正确的总体设计策略; Java编码技巧,遵循java编码规范; 编码完成后对应用关键点的调优;
  • 4. 优化前该做的事一个良好的设计能提高程序的性能,这一点不仅适用于JAVA,也适用也任何的编程语言。 因为它充分利用了各种资源,如内存,CPU,高速缓存,对象缓冲池及多线程,从而设计出高性能和可伸缩性强的系统。 为了提高程序的性能而改变原来的设计是比较困难的,但是,程序性能的重要性常常要高于设计上带来的变化。因此,在编程开始之前就应该有一个好的设计模型和方法。
  • 5. 程序中通常的性能瓶颈所有的应用程序都存在性能瓶颈,为了提高应用程序的性能,就要尽可能的减少程序的瓶颈。以下是在JAVA程序中经常存在的性能瓶颈。 了解了这些瓶颈后,就可以有针对性的减少这些瓶颈,从而提高JAVA应用程序的性能瓶颈Java程序中的关联点文件的读写和网络的操作程序等待数据读写到硬盘或网络Cpu等待Cpu空闲内存应用使用大量内存,jvm没有足够空间,导致jvm频繁GC异常程序不断处理异常信息同步程序等待共享资源被释放数据库程序等待数据库返回结果集
  • 6. 系统性能profile流程1、明确对性能的具体要求; 2、了解当前程序的性能;(loadrunner…) 3、找到程序的性能瓶颈;(where -Jprofile) 4、采取适当的措施来提高性能;(why) 5、只进行某一方面的修改来提高性能;(How…即设计模式,JAVA代码的实现,布署JAVA的环境和操作系统来提高应用程序的性能) 6、返回到步骤3,继续作类似的工作,一直达到要求的性能为止;
  • 7. Where 问题在哪里!调优的关键在于找出主要消耗点 性能:哪些方法被调用消耗Cpu时间最多;因素有两个 单次运行耗时 方法在应用服务时的运行次数 内存:内存中的对象主要是哪些,数量有多少; 内存常驻对象; 方法体中生成的运行期对象;
  • 8. Why 找原因找出系统数据(内存消耗分布、代码Cpu耗时比例…)后进行针对的代码分析,看是否是正常的消耗。 工具能够引导你把注意力集中到关键点上,但系统调优是否有效还在于你在分析对应点的代码后,是否能够找到更好的解决方案。 性能跟踪工具仅仅是一个度量工具,最宝贵的还是你的头脑,技术上的思路&对业务的熟悉度。 仔细读代码,代码是否有问题!有没有不必要的开销 认真分析业务,看有没有其他的实现方式
  • 9. How 定对策!集中力量优化占用80%性能、内存的代码段 优化后,系统性能瓶颈会发生转变(性能开销比例发生变化),需要重新采集数据
  • 10. Jprofile5 Steps下载 http://www.ej-technologies.com/products/jprofiler/overview.html 安装(略) 集成 跟踪 内存 性能 线程
  • 11. Jprofile5 Steps-集成-1应用服务器集成(适用于检查Web应用)
  • 12. Jprofile5 Steps-集成-2Eclipse集成(也包含其他开发工具集成)
  • 13. Jprofile5 Steps-性能性能的优化,多次执行对应业务的代码段(刷新页面、利用loadrunnner)
  • 14. Jprofile5 Steps-内存
  • 15. Jprofile5 Steps-线程
  • 16. 案例List页面的调优,页面展示会是一个大问题,Url的渲染! 大量链接的渲染,通过建立一个链接渲染工具来实现(建立参数基准),生成时从内部缓存快速拼接生成[回避频繁使用webex中uribroker对象]; 大量内存中的缓存对象: 性能与内存占用的权衡 Object – 成员变量的类型 尽量使用简单类型[Data or int] 不要建立空的容器对象 list<***>
  • 17. Q&A