快捷搜索:

Apusic应用服务器的性能调节_JVM优化

Apusic利用办事器作为企业利用的运行平台,系统的机能异常紧张。当利用对机能的要求对照苛刻时,就要斟酌是否必要改变系统的缺省设置来提升办事器的机能。首先应该斟酌系统的硬件情况(CPU主频上下、内存大年夜小、硬盘转速及收集传输速度等)是否能满意利用的需求。对付繁杂的大年夜型散播式企业利用,硬件情况不应该仅仅满意Apusic利用办事器的最低要求设置设置设备摆设摆设,而应该前进硬件设置设置设备摆设摆设使利用运行的绰绰有余,如CPU和内存的应用率都不应大年夜于80%。另一方面,改变软件情况的设置设置设备摆设摆设参数对付机能的影响也异常显明。本文就将先容若何优化软件情况设置设置设备摆设摆设来前进系统机能,分为两个方面: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平台的履行事情量分为四个部分:

1.字节码的履行:JVM花费大年夜概一半的光阴来解释字节码。

2.Garbagecollection(垃圾收受接收)

3.线程治理

4.动态操作:类装载、绑定反省、安然反省、动态类装载、非常捕获、反射机制、本地措施的翻译。

此中,工具的垃圾收受接收会占用运行光阴,造成法度榜样的短暂中断。

我们可以经由过程敕令行要领来启动Apusic办事器,这样就可以有选择的设置敕令行参数。应用敕令行参数的主要目的是:选择Java法度榜样应用的JVM类型和JVM运行时占用堆内存的分配策略。

应用HotSpot

HotSpotJVM作为java2SDK的一个附加模块,应用了state-of-the-art技巧大年夜大年夜的前进了系统机能:

1.适应编译:HotSpotJVM会在法度榜样的运行历程中阐发机能的瓶颈("hotspots"),然后编译这些和机能前进最慎密的部分。

2.改良的Garbagecollection

3.线程同步优化??

HotSpotJVM应用两个机械字(two-machine-word)作为工具的header,而不象大年夜多半JVM应用三个机械字,这样大年夜约可以节省10%的堆内存空间,加速了对所有工具的扫描。

HotSpotJVM也丢弃了handle的观点,工具引用的实现是经由过程直接指针,削减了内存的应用和前进了处置惩罚速率。造访实例变量象C说话一样的高效。

可以去http://java.sun.com/products/hotspot/2.0/download.html下载JavaHotSpotTMServerVM2.0,履行安装即可。假如必要可以针对jdk和jre分手进行安装。

HotSpotJVM分为client和server版本,分手针对范例的客户端利用法度榜样和办事器端利用进行了优化。Jdk1.3安装后就包孕了JavaHotSpotClientVM,上面安装的是JavaHotSpotServerVM。

可以经由过程敕令行参数选摘要应用的JVM:

•java-server:JavaHotSpotServerVM

•java-hotspot:JavaHotSpotClientVM

•java-classic:Java2ClassicVM

缺省环境是应用HotSpotClientVM。可以用java-server-version来查看版本信息,确定是否以精确安装。

只要针对不合的利用,选择Client或ServerHotSpotVM。对付Server-side利用,无意偶尔机能会前进20%,只要简单的在敕令行启动Server时加上-server。

GarbageCollection

HotSpotJVM供给了三种类型的垃圾收受接收算法,分手是:

1.Copy/scavengecollection

2.Mark-compactcollection

3.Incremental(train)collection

详细的含义我不说清楚明了,有兴趣可以查看相关的文档。

一个JVM的吞吐量是指撤除GC耗损的光阴占总履行光阴的百分比。是以,80%的吞度量便是说GC耗损了20%的JVM处置惩罚光阴。当你的利用法度榜样运行时,JVM的GC会造成法度榜样的停息。

堆内存被分成了new和old两部分,如下图:

new部分包括新创建工具区和两个survivor区(SS#1和SS#2),新创建的工具分配内存在new中,长光阴存活的工具被移动到了old部分。Perm是一个永远区域,分配给JVM本省,可以经由过程敕令行参数-XX:MaxPermSize=64m来设置。

当new被填满后,会触发"帮助"GC,把存在足够长光阴的工具移动到old中。当old中也被填满了,会触发"主"GC,将遍历堆内存中的所有工具。可以看出,"主"GC会耗损更多的光阴。足够大年夜的new会得当必要大年夜量创建存在光阴很短的工具,而old假如不敷大年夜会频繁的触发"主"GC,大年夜大年夜低落了机能。以是,我们的义务便是若何设置堆内存的大年夜小以及若何筹划new和old区域的比例来得当我们利用。

"帮助"GC应用Copy/scavengecollection算法,"主"GC应用Mark-compactcollection。

Heap分配策略

经由过程敕令行参数,我们可以设置堆的大年夜小和分配"new"、"old"的比例。一些常用参数如下:

具体的参数设置请参看相关的文档。

若何来筹划我们的堆内存分配策略呢?没有一个明确具体的规定,只能根据我们详细的利用进行调节,使机能达到最优化。这种优化措施不必要法度榜样员改变代码,但无意偶尔效果会很显着。下面总结了一些操作建议:

•假如GC成为了瓶颈,请定制你的堆内存分配

•分配尽可能多的内存给JVM。但假如过多,会引起内存和硬盘之间的互换,反而低落的机能。你可以分配80%的可用RAM给JVM。

•假如是Server-Side利用,请加-server参数。这样,缺省的NewRatio是2,SurvivorRatio是25,得当大年夜部分利用。也可以用NewSize、MaxNewSize来设置。

•设置-Xms和-Xmx的大年夜小相等,可以避免在每次GC后调剂堆内存的大年夜小。•同样事理设置NewSize、MaxNewSize相等。

•"new"的大年夜小最好不要大年夜于"old"的一半。??

例如,可以经由过程下面的敕令行启动Apusic办事器:

java-server-XX:NewSize=128m-XX:MaxNewSize=128m-XX:SurvivorRatio=8-Xms512m-Xmx512mcom.apusic.server.Main

Apusic利用办事器设置设置设备摆设摆设的优化??

下面主要阐明Apusic中的两个文件影响机能的参数阐明(这两个文件放在%APUSIC_HOME%\config目录中)及数据库中的设置。

apusic.conf

把此中两个参数改动为:??

MaxClients参数值设置的目的是防止回绝办事进击。当参数值设置较小时可以限定办事流量,起到防止回绝办事进击的感化,然则当造访的用户较多时而此参数设置较小时却会影响机能。一样平常环境下,不斟酌防止回绝办事进击,此参数设置为-1,表示办事流量没有限定。??

MaxWaitingClients:与MaxClients有类似的功能,他表示当许多并发用户造访时,可容许等待的最大年夜客户办事数。一样平常环境下,不斟酌防止回绝办事进击,此参数设置为较大年夜的数,如10000,假如设置较小,如50,当等待相应的并发办事行列步队数跨越50时,使得一些办事得不到相应,从而损掉一些相应结果。

datasources.xml

min-spare-connections:指连接池最小容量

max-spare-connections:指连接池最大年夜容量

stmt-cache-size:指语句缓存容量

resultset-cache-size:指结果集缓存容量

resultset-cache-timeout:指结果集缓存超时设置设置设备摆设摆设如下:……??

连接池最小容量:也便是初始连接数,此值不宜设置太小,太小须赓续建立连接。也不宜设置太大年夜,太大年夜耗损资本。??

连接池最大年夜容量:连接池中可容纳的最大年夜连接数,当连接池中的连接数不敷用时,必要等待其他的被应用的连接获得开释,才能应用,否则只能等待。根据利用的实际环境设置此值。??

语句缓存容量:对所履行的语句进行缓存,当再次履行此语句时,不必从新编译,从而前进了机能。根据机械内存的大年夜小适当设置此值。??

结果集缓存容量:把所获得的结果集进行缓存,当再次应用此结果集时,不必再次从数据库中取得,而可以直接从缓存中取得,从而前进机能。根据机械内存的大年夜小适当设置此值。??

结果集缓存超时:结果集过韶光阴,此光阴不宜设置过长,以免挥霍资本。??

注:语句缓存容量、结果集缓存容量、结果集缓存超时参数主要针对Oracle数据库来设计的。??

经由过程适当的调节Java虚拟机和Apusic的设置设置设备摆设摆设文件,可以显明的提升系统的机能。在一些详细的利用中,还能够经由过程增添实例池、加大年夜Cached、改变并发策略等措施来改良系统的整体机能。开拓职员只要颠末赓续的总结,就可以在Apusic利用办事器上开拓出稳定而又高机能的企业利用。

您可能还会对下面的文章感兴趣: