解决J2EE系统应用性能问题常用优化项目

BitLuminaryMaster
• 阅读 144

性能问题的最明显表现是网页的响应时间变慢。在J2EE系统中,经常体现有下面更为基本的症状:

应用服务器资源的使用情况

JVM堆的使用情况

系统资源的使用情况

数据库资源的使用情况

网络活动

这些现象表明J2EE应用依赖很多外部资源,并且是运行在一个层次化的执行模式的环境中:

由于Java虚拟机和应用服务器掩盖了操作系统和硬件的特性,所以在设计软件系统时,架构工程师更应该深刻理解整个操作环境。

在设计软件系统时,架构工程师应把性能和可扩展性放在首位,然后开始寻找容易解决的问题,反应时间缓慢通常的原因是访问数据库效率低和过多地调用远程对象和方法。接下来,架构工程师可继续寻找不明显的原因,例如算法的累积影响和不必要的开销。

现在市场上的各个J2EE应用服务器有很多配置项目。内容来自Java中文网(www.javaweb.cc)这里只简单介绍一些常见的性能优化配置项目。

很多应用服务器都有一些与J2EE规范有关的操作系统配置项目或非标准的特性,这可以提高系统性能。应该化时间来理解这些性能配置。

Java虚拟机堆和垃圾回收设置

任何Java应用的性能调整基础都涉及到堆的大小和垃圾回收设置。(这里主要讨论Sun HotSpor JVM).

堆可分为三代,年轻的(新的),年老的和持久的。Hotspot JVM的内存基本配置包括最大堆大小,初始堆大小和年轻一代堆的大小。当配置最大堆大小时可参考下面一些指导:

最大大小应小于物理内存,避免虚存的页面调度。

需要减去其他进程使用的内存

在负载测试时进行优化

注意不要将最大堆大小设置得过大。堆越大,内存中保存的对象越多。内存中对象越多,回收过程时间越长。

配置初试堆大小的一般性策略包括:

将初始大小设置为最大堆大小

将初始大小设置为最大堆大小的1/4到1/2

对于年轻一代堆大小,Sun 推荐是设置为最大堆大小的1/3。

也可以选择不同的垃圾回收算法。首先是增量垃圾回收。该算法的意思是减少单个对象回收停顿时间,这样的结果是整体回收性能的下降。该算法将相互引用的对象分组,然后尝试按组回收。尝试回收的部分越小,回收处理的时间往往会越少。

1.4.1版的HotSpot JVM增加了两个垃圾回收算法:并行算法和并发算法。内容来自Java中文网(www.javaweb.cc)

在年轻一代堆中实现了并行算法。在多处理器的机器上,这种回收算法使用了多线程来提高性能。虽然这个算法会暂停所有的应用线程,但是由于利用了多个CPU使得回收时间非常快。在年轻一代堆中,该算法显著地减少了回收带来的停顿。

在年老一代堆中实现了并发算法。在应用中最大限度地执行并发。回收过程分为4个阶段,覆盖了可回收对象的标记和清除操作。前两个过程会暂停应用线程,后两阶段可与应用并发执行。并发垃圾回收算法的"最大限度并发"特点可以使JVM利用更大的堆和多个CPU。因此应关注由于采用缺省的mark-compact(标记-压缩)和stop-the-world(停顿所有处理)等垃圾回收算法所带来的延迟和吞吐量问题。

处理线程

J2EE应用服务器是多线程的应用。应用服务器的线程是一种资源池,处理请求和和应用服务器的内部功能等任务共享这些资源。

很多应用服务器允许为特定的任务或应用配置不同大小的线程池。通常需要增加这些线程池的大小以满足应用负载的需要。

架构工程师应该避免将线程池大小设置过大,这是因为会增加上下文交换的次数,从而降低应用的性能。线程池的大小通常应该能最大利用机器上的CPU,同时又不能使CPU过载。

EJB配置项目

在应用服务器中,很多不同类型的EJB是以资源池的方式实现的。通常这些池大小和初始Bean的数量会明显影响应用的性能。

架构工程师应该避免将这些池大小设置的过大,这样会导致不必要地消耗JVM和操作系统内存。另外,将初始Bean数量设置过高会使得应用服务器的启动时间长的难以接受。

在应用服务器中,缓存很多不同类型的EJB。缓存大小和超时设置通常也会对应用性能带来显著影响。内容来自Java中文网(www.javaweb.cc)

架构工程师应该避免将缓寸大小设置过大,这同样会不必要地消耗大量JVM和操作系统内存。此外,应避免设置过长的超时--例如当EJB不用时,仍被缓存---,这也会导致不必要地消耗大量内存。

数据库配置项目 Java中文网(www.javaweb.cc)

J2EE规范要求应用服务器厂商必须提供数据库连接资源池功能。通常增加数据库连接池的大小会提高性能。架构工程师应该考虑不同类型的SQL操作(例如事务型和批处理型)应使用不同的连接池。如果一个消息Bean执行批处理操作,那么应该为此另创建一个连接池,而不要与事务型操作使用同一个连接池。

很多J2EE应用服务器提供了Prepared Statement 的缓存功能。创建Prepared Statement是很耗费资源的。在事务型的J2EE应用中通常执行很多同样的SQL语句,只是参数不同而已。所以在应用中应发挥数据库配置项目的作用,尽量使用Prepared Statement。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
仲远 仲远
2年前
System Dashboard Pro for Mac(系统仪表板)
SystemDashboardPro可以帮助用户实时监测Mac电脑的CPU、内存、硬盘、网络等系统资源的使用情况,以及应用程序的运行状态。它提供了多种实用的功能,包括实时监控、历史记录、警报通知、自定义布局等,可以帮助用户了解系统的运行情况,及时发现和解决
芝士年糕 芝士年糕
2年前
Nmon使用方法
一、简介1、nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,记录的信息比较全面,并且能输出结果到文件中,然后通过nmonanalyzer工具产生数据文件与图形化结果。2、nmon可监控的数据类型内存使用情况磁盘适配器文件系统中的可用空间CPU使用率页面空间和页面速度异步I/O,仅适用
Wesley13 Wesley13
3年前
MySQL——性能优化
性能优化的思路1、首先需要使用慢查询功能,去获取所有查询时间比较长的SQL语句。MySQL——慢查询2、其次使用explain命令去查看有问题的SQL的执行计划。MySQL——执行计划EXPLAIN3、最后可以使用showprofile\s\查看有问题的SQL的性能使用情况。MySQL高级:showprofile
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
可莉 可莉
3年前
10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包 linux下抓包
10.6监控io性能iostat命令\iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostatxroot@
流浪剑客 流浪剑客
1年前
JProfiler for Mac 14 附 注册码 支持M1
是一款针对Mac用户的专业Java性能分析工具,它可以帮助开发人员识别和解决Java应用程序的性能瓶颈和问题。JProfilerforMac提供了全面的分析和优化功能,包括实时监控Java应用程序的各个方面,如内存使用情况、CPU占用、线程活动和数据库访问
一种面向混合云平台基于LSTM预测模型的资源池配额方法。
基于用户的历史配额申请情况和实际资源使用情况组成数据集搭建LSTM时序预测模型。当前用户提出资源配额申请时,基于该用户的历史资源实际使用情况结合LSTM模型来预测该次配额申请的实际使用量来动态调整实际分配给用户的配额量从而减少资源滥用的可能性。
燕青 燕青
1年前
Macos专业的系统监控工具:iStatistica for mac
是一款功能强大的系统监测工具,可以实时监测CPU、内存、网络、磁盘卡等系统资源的使用情况,帮助用户轻松管理电脑性能和优化系统运行。具体来说,iStatisticaforMac具备以下特点:系统监控仪表板:实时展示CPU、内存、网络、磁盘卡等系统资源的运行状
刚背兽 刚背兽
4个月前
Gazer for Mac:让系统监控更简单高效
GazerforMac是一款专业的系统监控工具,旨在帮助用户高效监控Mac的系统性能。无论是CPU使用率、内存占用还是网络流量,Gazer都能通过其直观的界面和强大的功能,提供全面的系统性能信息。软件支持多种监控模式,用户可以实时查看系统资源的使用情况。G
BitLuminaryMaster
BitLuminaryMaster
Lv1
砧杵敲残深巷月,井梧摇落故园秋。
文章
4
粉丝
0
获赞
0