Java EE (11) - 影响性能的因素
垂直层(Tier)影响性能的因素
资源层
数据库性能
通常考虑以下方面的优化(MySQL为例):
--使用哪种存储引擎:MyISAM vs. InnoDB, MERGE, MEMORY, Federated, ARCHIVE
--使用分区机制
--建立必要的索引
--设置缓存
--调优服务器参数
Table_open_cache
max_connection
Open_files_limit
Thread_cache_size
客户端并发访问速度
受以下几个方面的影响
--事务
--锁与隔离级别
--并发用户数量
--缓存
网络速度
应用服务器与数据库服务器:同一台主机或者位于同一网段
业务层(含整合层)
层内数据与数据库的同步
同步机制大体分为两类:
--使用DAO封装JDBC代码
从性能角度考虑,应该使用连接池(javax.sql.DataSource)。
--使用O/R Mapping框架,如JPA, Hibernate等
业务层应用程序的性能
SLSB具有以下特征:
--池化管理
--复用
--极高性能
SFSB具有以下特征(可以设置高速缓存):
--及时创建
--与客户端一对一
--可升级能力远优于HttpSession
Forward cache机制--将频繁读取的数据缓存在业务层(EJB层)
Off-load shared resources--将频繁读取的数据存储在业务层的存储设备(硬盘)中。
与表示层数据交换的速度
考虑以下因素:
--网络通讯
--使用适合的模式,如传输对象模式(TO)、会话外观模式(SF)
--事务的延伸范围
表示层
Web应用程序的性能
应从以下方面考虑Web层的优化:
--使用Model 2架构
--如果存在业务层,应使用业务代理(BD)模式
--不应在HttpSession对象中保存大型对象
--避免从JSP页中转发(forward)请求
--缺省情况下不要在JSP页中创建HttpSession -- <%@ page session="false"%>
--避免过重使用逻辑标签(tag)
--合理设置HttpSession超时时间
客户端并发访问的速度
以下方面影响客户端并发访问的用户数量和速度(从服务器端看):
--主机的负载均衡(Load balance)
Session粘着机制( Session affinity)
Session Prefetch
短路
--线程池的设置
--使用缓存
--限制并发请求数
--引入中间性的应答
网络速度
--页面的请求频率与数据量(请求延迟)将影响网络速度(从客户端看)。
--设计 UI 时的考虑 - 使用尽量少的页面,每个页面尽可能包含多的信息
--典型的数据量问题: 过多的页面内容,包括页面背景音乐、Flash动画等。
--对于数据量过大的远程请求,可以考虑使用数据压缩技术。
--典型的请求频率问题: 不当地使用AJAX技术,导致过多细粒度的请求。
客户层
客户端代码
--客户层性能与服务器端整体性能无直接关系
--但客户端性能影响用户体验
考虑JavaScript代码的执行性能
考虑JS框架的性能:jQuery vs. EXT JS.
网络带宽
水平层(Layer)影响性能的因素
硬件层
--主机的性能
--复制策略的使用
操作系统层
--OS的性能
中间件层
--JVM的性能
--应用程序服务器的性能
应用程序层
--程序的结构
--编码的质量
Java EE (11) - 影响性能的因素的更多相关文章
- 理解 OpenStack Swift (3):监控和一些影响性能的因素 [Monitoring and Performance]
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- Java SE和Java EE应用的性能调优
凡事预则立,不预则废,和很多事情一样.Java性能调优的成功.离不开行动计划.方法或策略以及特定的领域背景知识.为了在Java性能调优工作中有所成就.你得超越"花似雾中看"的状态, ...
- redis性能测试以及影响性能的因素
redis-benchmark测试工具的命令使使用方法及参数如下:redis-benchmark [-h <host>] [-p <port>] [-c <clients ...
- mysql中影响数据库性能的因素讲解
mysql中影响数据库性能的因素讲解 在本篇文章中我们给大家讲述了mysql中影响性能的因素以及相关知识点内容,有兴趣的朋友参考下 关于数据库性能的故事 面试时多多少少会讲到数据库上的事情,“你对数据 ...
- 从系统的角度分析影响程序执行性能的因素——SA20225205 黄兴宇
实验总结分析报告:从系统的角度分析影响程序执行性能的因素 1.请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的.自洽 ...
- 影响Java EE性能的十大问题(转)
本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE.中间件和JVM技术.他在性能优化和提升方面也有很深刻的见解,下面他将和大家分享一下常见的10个影响Java EE性能问题 ...
- 流言粉碎机:JAVA使用 try catch 会严重影响性能
目录 一.JVM 异常处理逻辑 二.关于JVM的编译优化 1. 分层编译 2. 即时编译器 1. 解释模式 2. 编译模式 3. 提前编译器:jaotc 三.关于测试的约束 执行用时统计 编译器优化的 ...
- 影响mysql性能的因素
一.服务器硬件. CPU不够快,内存不够多,磁盘IO太慢. 对于计算密集型的应用,CPU越可能去影响系统的性能,此时,CPU和内存将越成为系统的瓶颈. 当热数据大小远远超过系统可用内存大小时,IO资源 ...
- Java 中的 try catch 影响性能吗?
前几天在 code review 时发现有一段代码中存在滥用try catch的现象.其实这种行为我们也许都经历过,刚参加工作想尽量避免出现崩溃问题,因此在很多地方都想着 try catch一下. 但 ...
随机推荐
- [置顶] ※数据结构※→☆线性表结构(queue)☆============队列 顺序存储结构(queue sequence)(八)
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的 ...
- SDUTOJ 1489 求二叉树的先序遍历
<img src="http://img.blog.csdn.net/20141014212549703?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- zoj 1107 FatMouse and Cheese(记忆化搜索)
题目链接:点击链接 题目大意:老鼠从(0,0)出发,每次在同一个方向上最多前进k步,且每次到达的位置上的数字都要比上一个位置上的数字大,求老鼠经过的位置上的数字的和的最大值 #include<s ...
- maven Nexus 搭建本地中央仓库。
maven 网络中央仓库占用大量的网络资源,所以构建本地中央仓库. 过程如下: 下载地址: http://www.sonatype.org/nexus/archived 我用的是1.6的 [root@ ...
- Android常用控件之RatingBar的使用
RatingBar控件比较常见就是用来做评分控件,先上图看看什么是RatingBar 在布局文件中声明 <?xml version="1.0" encoding=" ...
- Hadoop之MapReduce程序应用三
摘要:MapReduce程序进行数据去重. 关键词:MapReduce 数据去重 数据源:人工构造日志数据集log-file1.txt和log-file2.txt. log-file1.txt内容 ...
- iOS学习笔记(十五)——数据库操作(SQLite)
SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...
- 检查java class的版本号
补丁总是会一遍又一遍的打,越打越多 有时候,就担心有人不小心把高版本的class打到低版本jre运行的环境中 简单写了点代码,检查文件夹中class的版本号 package org.wee.cv; i ...
- hdu 1024(dp)
传送门:Max Sum Plus Plus 题意:从n个数中选出m段不相交的连续子段,求这个和最大. 分析:经典dp,dp[i][j][0]表示不取第i个数且前i个数分成j段达到的最优值,dp[i][ ...
- Java引用类型具体解释
JVM 的垃圾回收器对于不同类型的引用有不同的处理方式.java中对于一个对象来说,仅仅要有引用的存在,它就会一直存在于内存中.假设这种对象越来越多,超出了JVM中的内存总数,JVM就会抛出OutO ...