Apusic应用服务器的性能调节

Apusic应用服务器的性能调节,第1张

Apusic应用服务器作为企业应用的运行平台 系统的性能非常重要 当应用对性能的要求比较苛刻时 就要考虑是否需要改变系统的缺省设置来提升服务器的性能 首先应该考虑系统的硬件环境(CPU主频高低 内存大小 硬盘转速及网络传输速率等)是否能满足应用的需求 对于复杂的大型分布式企业应用 硬件环境不应该仅仅满足Apusic应用服务器的最低要求配置 而应该提高硬件配置使应用运行的绰绰有余 如CPU和内存的使用率都不应大于 % 另一方面 改变软件环境的配置参数对于性能的影响也非常显著 本文就将介绍如何优化软件环境配置来提高系统性能 分为两个方面 Java虚拟机(JVM)的性能优化和Apusic应用服务器配置的优化 Java虚拟机(JVM)的性能优化 Java体系结构由四个不同却又相互关联的部分组成 语言本身 class文件格式 JavaAPI库和JVM 当执行一个Java程序时 源代码是用Java语言写成 它被编译成class文件格式 运行在JVM中 同时 Java程序调用JavaAPI库的方法 访问系统资源 JVM和JavaAPI库形成了编译和运行环境 就叫做Java平台 JVM是基于堆栈的(stack based) 而不象汇编语言是基于寄存器的(registerbased) JVM是一个动态堆栈基础上的抽象的计算机体系结构 提供了push pop来 *** 作数据 JVM的主要功能是装载class文件 执行字节码 java平台的执行工作量分为四个部分 .字节码的执行 JVM花费大概一半的时间来解释字节码 .Garbagecollection(垃圾回收) .线程管理 .动态 *** 作 类装载 绑定检查 安全检查 动态类装载 异常捕获 反射机制 本地方法的翻译 其中 对象的垃圾回收会占用运行时间 造成程序的短暂中断 我们可以通过命令行方式来启动Apusic服务器 这样就可以有选择的设置命令行参数 使用命令行参数的主要目的是 选择Java程序使用的JVM类型和JVM运行时占用堆内存的分配策略 使用HotSpot HotSpotJVM作为java SDK的一个附加模块 使用了state of the art技术大大的提高了系统性能 .适应编译 HotSpotJVM会在程序的运行过程中分析性能的瓶颈( hotspots ) 然后编译这些和性能提高最紧密的部分 .改善的Garbagecollection .线程同步优化HotSpotJVM使用两个机器字(o machine word)作为对象的header 而不象大多数JVM使用三个机器字 这样大约可以节省 %的堆内存空间 加速了对所有对象的扫描 HotSpotJVM也丢弃了handle的概念 对象引用的实现是通过直接指针 减少了内存的使用和提高了处理速度 访问实例变量象C语言一样的高效 可以去下载JavaHotSpotTMServerVM 执行安装即可 如果需要可以针对jdk和jre分别进行安装 HotSpotJVM分为client和server版本 分别针对典型的客户端应用程序和服务器端应用进行了优化 Jdk 安装后就包含了JavaHotSpotClientVM 上面安装的是JavaHotSpotServerVM 可以通过命令行参数选择要使用的JVM &# ;java server JavaHotSpotServerVM&# ;java hotspot:JavaHotSpotClientVM&# ;java classic Java ClassicVM缺省情况是使用HotSpotClientVM 可以用java server version来查看版本信息 确定是否以正确安装 只要针对不同的应用 选择Client或ServerHotSpotVM 对于Server side应用 有时性能会提高 % 只要简单的在命令行启动Server时加上 server GarbageCollection HotSpotJVM提供了三种类型的垃圾回收算法 分别是 .Copy/scavengecollection .Mark pactcollection .Incremental(train)collection具体的含义我不解释了 有兴趣可以查看相关的文档 一个JVM的吞吐量是指除去GC消耗的时间占总执行时间的百分比 因此 %的吞度量就是说GC消耗了 %的JVM处理时间 当你的应用程序运行时 JVM的GC会造成程序的暂停 堆内存被分成了new和old两部分 如下图 new部分包括新创建对象区和两个survivor区(SS# 和SS# ) 新创建的对象分配内存在new中 长时间存活的对象被移动到了old部分 Perm是一个永久区域 分配给JVM本省 可以通过命令行参数 XX:MaxPermSize= m来设置 当new被填满后 会触发 辅助 GC 把存在足够长时间的对象移动到old中 当old中也被填满了 会触发 主 GC 将遍历堆内存中的所有对象 可以看出 主 GC会消耗更多的时间 足够大的new会适合需要大量创建存在时间很短的对象 而old如果不够大会频繁的触发 主 GC 大大降低了性能 所以 我们的任务就是如何设置堆内存的大小以及如何规划new和old区域的比例来适合我们应用 辅助 GC使用Copy/scavengecollection算法 主 GC使用Mark pactcollection Heap分配策略 通过命令行参数 我们可以设置堆的大小和分配 new old 的比例 一些常用参数如下 详细的参数设置请参看相关的文档 如何来规划我们的堆内存分配策略呢?没有一个明确详细的规定 只能根据我们具体的应用进行调节 使性能达到最优化 这种优化方法不需要程序员改变代码 但有时效果会很明显 下面总结了一些 *** 作建议 &# ;如果GC成为了瓶颈 请定制你的堆内存分配&# ;分配尽可能多的内存给JVM 但如果过多 会引起内存和硬盘之间的交换 反而降低的性能 你可以分配 %的可用RAM给JVM &# ;如果是Server Side应用 请加 server参数 这样 缺省的NewRatio是 SurvivorRatio是 适合大部分应用 也可以用NewSize MaxNewSize来设置 &# ;设置 Xms和 Xmx的大小相等 可以避免在每次GC后调整堆内存的大小 &# ;同样道理设置NewSize MaxNewSize相等 &# ; new 的大小最好不要大于 old 的一半 例如 可以通过下面的命令行启动Apusic服务器 java server XX:NewSize= m XX:MaxNewSize= m XX:SurvivorRatio= Xms m Xmx m apusic server Main Apusic应用服务器配置的优化 下面主要说明Apusic中的两个文件影响性能的参数说明(这两个文件放在%APUSIC_HOME%\config目录中)及数据库中的设置 nf把其中两个参数修改为 MaxClients参数值设置的目的是防止拒绝服务攻击 当参数值设置较小时可以限制服务流量 起到防止拒绝服务攻击的作用 但是当访问的用户较多时而此参数设置较小时却会影响性能 一般情况下 不考虑防止拒绝服务攻击 此参数设置为 表示服务流量没有限制 MaxWaitingClients 与MaxClients有类似的功能 他表示当许多并发用户访问时 可允许等待的最大客户服务数 一般情况下 不考虑防止拒绝服务攻击 此参数设置为较大的数 如 如果设置较小 如 当等待响应的并发服务队列数超过 时 使得一些服务得不到响应 从而丢失一些响应结果 datasources xml min spare connections 指连接池最小容量max spare connections 指连接池最大容量stmt cache size 指语句缓存容量resultset cache size 指结果集缓存容量resultset cache timeout 指结果集缓存超时配置如下 ……连接池最小容量 也就是初始连接数 此值不宜设置太小 太小须不断建立连接 也不宜设置太大 太大消耗资源 连接池最大容量 连接池中可容纳的最大连接数 当连接池中的连接数不够用时 需要等待其他的被使用的连接得到释放 才能使用 否则只能等待 根据应用的实际情况设置此值 语句缓存容量 对所执行的语句进行缓存 当再次执行此语句时 不必重新编译 从而提高了性能 根据机器内存的大小适当设置此值 结果集缓存容量 把所得到的结果集进行缓存 当再次使用此结果集时 不必再次从数据库中取得 而可以直接从缓存中取得 从而提高性能 根据机器内存的大小适当设置此值 结果集缓存超时 结果集过期时间 此时间不宜设置过长 以免浪费资源 注 语句缓存容量 结果集缓存容量 结果集缓存超时参数主要针对Oracle数据库来设计的 通过适当的调节Java虚拟机和Apusic的配置文件 可以显著的提升系统的性能 在一些具体的应用中 还能够通过增加实例池 加大Cached 改变并发策略等方法来改善系统的整体性能 开发人员只要经过不断的总结 就可以在Apusic应用服务器上开发出稳定而又高性能的企业应用 lishixinzhi/Article/program/Java/hx/201311/26290

Windows服务器中自带的性能监控工具叫做Performance Monitor;

在开始-运行中输入‘perfmon’,然后回车即可运行。

Monitor本身也是一个进程,运行起来也要占用一定的系统资源。所以你看到的资源的使用量应该比实际的要稍微高一点。这个工具在帮助管理员判断系统性能瓶颈时非常有用;

举个列子来说,今天有个用户抱怨说他们项目组的服务器(这是一台虚拟机)运行起来非常慢,但也不知道具体问题出在什么地方。任务管理器里显示CPU和内存的使用量都不算高,但服务器的相应就是非常慢;

Monitor,让其运行一段时间后(因为参考平均值会比较准确),发现average disk queue的值比较高,这就说明物理服务器的硬盘负荷太重,I/O *** 作的速度跟不上系统的要求。关掉虚拟机,将其转移到另一台硬盘负载比较小的主机上,再打开虚拟机。

分析性能情况

1、内存泄露判断

虚拟内存字节数(VirtualBytes)应该远大于工作集字节数(Workingset),如果两者变化规律相反,比如说工作集增长较快,虚拟内存增长较少,则可能说明出现了内存泄露的情况。

对于Workingset、Private Bytes、Available bytes这些计数器,如果在测试期间内数值持续增长,而且测试停止后位置在高水平,则也说明存在内存泄露。

Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Available

bytes计数器的值持续降低,则很可能存在内存泄漏。

2、CPU使用情况

一般平均不要超过70%,最大不要超过90%(好:70% 、坏:85%、 很差:90%)。

3、tps(每秒处理事务的数量,在SOAPUI中进行统计)

一般在10-100,不同应用程序具体值不同。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10751076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存