仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1508|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Apusic使用服务器的功能调治_JVM优化仓酷云

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。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使用服务器上开辟出不乱而又高功能的企业使用。原文链接:http://blog.csdn.net/JDMBA/archive/2006/12/13/1441556.aspx
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net网页编程,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
金色的骷髅 该用户已被删除
21#
发表于 2015-5-10 20:06:46 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
透明 该用户已被删除
20#
发表于 2015-5-6 22:11:43 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
柔情似水 该用户已被删除
19#
发表于 2015-5-6 19:11:59 | 只看该作者
是一种突破用户端机器环境和CPU
冷月葬花魂 该用户已被删除
18#
发表于 2015-5-3 16:35:33 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
再现理想 该用户已被删除
17#
发表于 2015-4-27 10:26:35 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
小魔女 该用户已被删除
16#
发表于 2015-4-21 15:51:54 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
深爱那片海 该用户已被删除
15#
发表于 2015-4-19 10:12:50 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
admin 该用户已被删除
14#
发表于 2015-3-30 21:01:33 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
只想知道 该用户已被删除
13#
发表于 2015-3-26 13:59:46 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
谁可相欹 该用户已被删除
12#
发表于 2015-3-26 10:17:04 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-25 16:03:24 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
变相怪杰 该用户已被删除
10#
发表于 2015-3-22 21:10:39 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
分手快乐 该用户已被删除
9#
发表于 2015-3-16 07:55:36 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
不帅 该用户已被删除
8#
发表于 2015-3-12 17:28:42 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
若相依 该用户已被删除
7#
发表于 2015-3-6 00:41:56 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
活着的死人 该用户已被删除
6#
 楼主| 发表于 2015-2-28 09:08:10 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
兰色精灵 该用户已被删除
5#
发表于 2015-2-10 00:18:47 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
简单生活 该用户已被删除
地板
发表于 2015-2-4 13:42:32 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-30 16:36:21 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-27 06:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表