Java高性能系统常见设计与优化-2017年11月.ppt

Java高性能系统常见设计与优化-2017年11月.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java高性能系统常见设计与优化

Java高性能系统常见设计与优化 世讯环宇研发部 高性能系统典型体系结构 优化原则 JVM优化 数据库设计 数据库访问 通信设计一 通信设计二 应用程序优化一 应用程序优化二 *?2008 cpec Information Service Corporation. All rights reserved. *CPEC Information Service Corporation 概述 Java VM 应用程序 通信 数据库 内存访问比硬盘I/O访问快万倍 内存访问比网络I/O访问快百倍 网络I/O访问比硬盘I/O访问快百倍 性能基准 首先降低硬盘I/O访问次数,如硬盘数据库访问 其次降低进程间通信I/O次数,尤其是远程进程间通信I/O次数,如JDBC数据库访问 降低CPU和内存等资源的占用 优化原则 概述 Java VM 应用程序 通信 数据库 优先使用BEA JRockit,而不是使用SUN JVM 如果使用SUN JVM,使用-server即Server版的JVM 根据Cache需要,可调整JVM的Heap Size,如-Xmx2048m,否则很可能出现Out of Memory异常。另外,Max Heap Size最好不要超过物理内存的1/2 其他JVM选项请参见产品手册,可输入java –help查看具体选项 概述 Java VM 应用程序 通信 数据库 数据模型设计应根据性能权衡降低表连接数量,一般每个SQL中最好不要超过3个表的连接,否则性能下降很大 使用DBMS的Partition特性加快大数据量表的SQL操作性能,详细信息可参见Oracle Partition部分文档 根据SQL建立索引,索引列与SQL中的列要有一定的对应关系,详细信息可参见Oracle 性能优化部分文档 对于统计查询,可考虑使用物化视图(Materialized Views) 使用JDBC连接池,物理连接建立对性能影响很大,对于并发很高的应用,可调高JDBC连接池的大小,如设为192 尽量降低对数据库的访问次数,否则性能影响很大 对于写操作,尽量使用批量(batch)写的方式,但每个事务中的SQL不要超过500; 对于查询请使用预取(PreFetch) 使用prepare statement,避免DBMS对SQL重复的解析与编译 SQL不要太复杂,尤其是连表查询的表最好不要超过3个 Where in的列表最好不要超过500个 概述 Java VM 应用程序 通信 数据库 使用硬件负载均衡器提高系统的并发用户数支持(连接复用) 使用软件负载均衡器提高系统的并发用户数支持(连接复用),如Apache,请参见Tomcat、JBOSS等Apache的AJP支持部分。单节点4CPU的应用服务器可支持10,000并发HTTP用户 请尽量使用异步通信,可使用ActiveMQ消息中间件 如果基于Socket开发,请使用异步I/O,比同步I/O一般快2倍,Apache即基于异步I/O实现 远程通信可考虑RMI,性能往往比基于XML较好 如果是基于XML的消息包,请使用个SAX或StAX接口,请不要使用DOM 如果使用SOAP,请使用开源库XFire,一般来说其性能是Apache Axis的3倍以上,并MyEclipse直接支持XFire; 请尽量降低远程进程间通信次数 在降低远程进程间通信次数的同时降低消息包的大小 概述 Java VM 应用程序 通信 数据库 如果需要使用线程池,请使用JDK1.5的java.util.concurrent包中的ThreadPoolExecutor 多线程同步也可使用java.util.concurrent.locks和java.util.concurrent.atomic中的封装 如果并发的定时调度任务很多,请使用开源库Quartz,可支持上万个定时任务 使用Cache大幅降低I/O访问次数,可基于开源库OSCache或JDK1.5的java.util.concurrent包中的ConcurrentHashMap来封装 对于高级的大数据量实时处理,可使用Oracle TimesTen内存数据库技术

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档