操作系统:
windows server 2003 R2 Enterprise x64 Edition Service Pack2
硬件:32G内存,24个cpu(2.4G)
weblogic9.20 
sun jdk1.5一、在weblogic console 修改参数"initial capacity","Maximun Capacity","Capacity Increment" 分别为50,150,10  (原始值为1,15,1) ,激活改变时一直没有反应,重新进入控制台,点击激活改变,报错:
 An error occurred during activation of changes, please see the log for details.  
  weblogic.management.provider.EditFailedException: Unable to start new activation while preparing  
  Unable to start new activation while preparing  

  看了日志也没有什么信息。为什么会改不了这些参数?我以前在别的电脑上都可以改的。二、修改setDomainEnv.cmd中的参数
  set MEM_ARGS=-Xms512m -Xmx1024m
   将上面的值设为1024,2048都启动不了,设成512,1024才可以启动。
  因为电脑的内存足够大,所以想给weblogic设多点内存,为什么设不了?

解决方案 »

  1.   

    -Xms 不能超过物理内存的25%  你这个改太大了吧?
      

  2.   

    第一个问题nitial capacity","Maximun Capacity","Capacity Increment不清楚是什么参数,比如是数据库连接还是其它。
    第二个问题是因为你用了sun的jdk,sun的jdk对最大内存有限制大约1.5G,你改成2g肯定起不来,把jdk改成bea的jroket吧,jroket对大的应用做了优化,你再设置设为1024,2048就可以了。
      

  3.   

    配置前需要确认一下两个事情,第一件事情,操作系统是否为64位,32内存稍微大一点不支持,因为你的内存是32G的,其次,JDK是多少位的,32位还是64位,还是兼容版本的。如果都是64位若不能设置太大,一般是操作系统的限制,若在Linux下需要相应的unlimit命令修改对应用程序的限制内存,这个具体可以查看下Linux命令。另外对于这么大的内容使用,一般来说,我们推荐的是多Server方式下运行(也就是集群),一般来说BEA有几个推荐,也是经过N多第三方测试过的,一个大的JVM内容不如多个小内存的Server同时运行时效率高,而且差别很大,不过这个不是越多越好,一般是2CPU一个Server是比较合适的,每个Server的内存不用太大;其实性能差别只要知道JVM怎么去管理内存和回收内存即可明白为什么集群会带来这些效果。在WEBLOGIC上做集群有两种,一种是硬件集群,一种是软件集群,两者很多时候是一起来的,硬件是主要是通过一个硬件分发器去分发到各个不同主机上,但是各个主机上内部可以做集群去处理这些请求。
      

  4.   


    集群是解决负载均衡问题,只要服务器上超过2CPU就是解决问题的好办法,好比两人干体力活,一个做事,一个累了一个可以歇着,比你一个力气大的人做事要好JVM回收最大特征就是对于同一个SERVER下回收过程需要停止服务,以检查出那些内存是需要被回收的,内存回收大致有7种算法,根据服务器厂商不一样会默认不同算法,算法都会去遍历内存,一般情况下如果你监控过JVM内存,它一般情况下是不会回收的,只有不太够用的时候才会去回收,如果内存大,第一遍历时间很长,第二对外服务的问题,而集群是解决这一问题的八办法,所以在WebLogic上做集群几乎不分软硬件的区分,硬件集群只是效率较好,WebLogic自带的集群代理节点可能代码上不是那么好,可以自己写多个机器上分发只是分发IP+端口号,同一个机器上就是分发到不同端口上去处理,为了较好的利用内存使用和在内存回收上做到切片回收(一般我个人做了一下测试和检测,对于2G内存回收非常快,前台访问只会瞬间暂停而已,我们一般配置一个节点都是1~2G以内)。
    如果是数据库连接,要检查数据库的可用SESSION是否够用,要剪掉已经被使用的