Java高性能系统常见设计与优化.ppt_第1页
Java高性能系统常见设计与优化.ppt_第2页
Java高性能系统常见设计与优化.ppt_第3页
Java高性能系统常见设计与优化.ppt_第4页
Java高性能系统常见设计与优化.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019 12 29 iSoftStoneInformationServiceCorporation Java高性能系统常见设计与优化 嵌入式软件事业部 2019 12 29 iSoftStoneInformationServiceCorporation 概述 JavaVM 应用程序 通信 数据库 2006iSoftStoneInformationServiceCorporation Allrightsreserved 3 高性能系统典型体系结构 2006iSoftStoneInformationServiceCorporation Allrightsreserved 4 优化原则 内存访问比硬盘I O访问快万倍内存访问比网络I O访问快百倍网络I O访问比硬盘I O访问快百倍 性能基准 首先降低硬盘I O访问次数 如硬盘数据库访问其次降低进程间通信I O次数 尤其是远程进程间通信I O次数 如JDBC数据库访问降低CPU和内存等资源的占用 优化原则 2019 12 29 iSoftStoneInformationServiceCorporation 概述 JavaVM 应用程序 通信 数据库 2006iSoftStoneInformationServiceCorporation Allrightsreserved 6 JVM优化 优先使用BEAJRockit 而不是使用SUNJVM如果使用SUNJVM 使用 server即Server版的JVM根据Cache需要 可调整JVM的HeapSize 如 Xmx2048m 否则很可能出现OutofMemory异常 另外 MaxHeapSize最好不要超过物理内存的1 2其他JVM选项请参见产品手册 可输入java help查看具体选项 2019 12 29 iSoftStoneInformationServiceCorporation 概述 JavaVM 应用程序 通信 数据库 2006iSoftStoneInformationServiceCorporation Allrightsreserved 8 数据库设计 数据模型设计应根据性能权衡降低表连接数量 一般每个SQL中最好不要超过3个表的连接 否则性能下降很大使用DBMS的Partition特性加快大数据量表的SQL操作性能 详细信息可参见OraclePartition部分文档根据SQL建立索引 索引列与SQL中的列要有一定的对应关系 详细信息可参见Oracle性能优化部分文档对于统计查询 可考虑使用物化视图 MaterializedViews 2006iSoftStoneInformationServiceCorporation Allrightsreserved 9 数据库访问 使用JDBC连接池 物理连接建立对性能影响很大 对于并发很高的应用 可调高JDBC连接池的大小 如设为192尽量降低对数据库的访问次数 否则性能影响很大对于写操作 尽量使用批量 batch 写的方式 但每个事务中的SQL不要超过500 对于查询请使用预取 PreFetch 使用preparestatement 避免DBMS对SQL重复的解析与编译SQL不要太复杂 尤其是连表查询的表最好不要超过3个Wherein的列表最好不要超过500个 2019 12 29 iSoftStoneInformationServiceCorporation 概述 JavaVM 应用程序 通信 数据库 2006iSoftStoneInformationServiceCorporation Allrightsreserved 11 通信设计一 使用硬件负载均衡器提高系统的并发用户数支持 连接复用 使用软件负载均衡器提高系统的并发用户数支持 连接复用 如Apache 请参见Tomcat JBOSS等Apache的AJP支持部分 单节点4CPU的应用服务器可支持10 000并发HTTP用户 2006iSoftStoneInformationServiceCorporation Allrightsreserved 12 通信设计二 请尽量使用异步通信 可使用ActiveMQ消息中间件如果基于Socket开发 请使用异步I O 比同步I O一般快2倍 Apache即基于异步I O实现远程通信可考虑RMI 性能往往比基于XML较好如果是基于XML的消息包 请使用个SAX或StAX接口 请不要使用DOM如果使用SOAP 请使用开源库XFire 一般来说其性能是ApacheAxis的3倍以上 并MyEclipse直接支持XFire 请尽量降低远程进程间通信次数在降低远程进程间通信次数的同时降低消息包的大小 2019 12 29 iSoftStoneInformationServiceCorporation 概述 JavaVM 应用程序 通信 数据库 2006iSoftStoneInformationServiceCorporation Allrightsreserved 14 应用程序优化一 如果需要使用线程池 请使用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来封装对于高级的大数据量实时处理 可使用OracleTimesTen内存数据库技术 2006iSoftStoneInformationServiceCorporation Allrightsreserved 15 应用程序优化二 中间层请尽量是stateless方式 而不是stateful方式 降低session状态数据的cluster复制需要熟悉java util包中的各种数据结构的适用场景 如HashMap适用于单记录的快速操作等

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论