【发布时间】:2014-11-27 10:46:48
【问题描述】:
我们有一个 Windows Server 2012 64 位 + Weblogic 12c 设置。 AdminServer 在与 64 位操作系统一起使用时需要更高的 PermSize,因此我们需要修改“setDomainEnv.cmd”(如 stackoverflow 上的其他问题所述)。
当通过通常的“startWeblogic.cmd”脚本启动AdminServer时,它使用“setDomainEnv.cmd”中的设置成功设置PermSize等,但是当使用NodeManager“startServer()”命令时,它没有。
我在文档中读到有关可以控制托管服务器(使用 NodeManager)启动时加载的参数这一事实,但我没有找到正确的方法。
我希望通过 NodeManager 或手动启动托管服务器(和 AdminServer)时,我们可以实现一致的行为。
有什么想法吗?
更新:
我检查了启动托管服务器时发生了什么,并且(!)比较了启动 AdminServer 时发生了什么。结果:AdminServer 进程(与托管服务器的“java.exe”实例相比,它启动了一个“javaw.exe”实例)永远不会传递 setDomainEnv.cmd 脚本中设置的任何参数。它基本上充满了 Oracle 内部参数。
在我看来,这一切看起来完全一团糟且前后矛盾。除此之外,我还发现了 Oracle 报告的一个问题,它神秘地谈到了在 64 位操作系统上运行时设置环境变量(请参阅标题“开发人员 ZIP 分发在 Windows 64 位和 Linux 64 位上失败”):
https://docs.oracle.com/cd/E24329_01/doc.1211/e26593/issues.htm#WLSRN238
我知道这是否适用于我的版本,因为我下载的版本没有说“开发者”版本,它基本上是最新版本的主要 weblogic 下载。
我想到的问题是:如果不使用“startServer”,启动 AdminServer 的预期方式是什么?是否有一个没有人关心的错误,因为它通常以不同的方式完成?当开始阅读 Oracle 文档时,这个相当简单的主题变得如此混乱,我真的很失望:它根本没有说明任何内容。
通过“startServer()”命令启动AdminServer时触发的命令行:
C:\PROGRA~1\Java\JDK17~1.0_6\jre\bin\javaw.exe -classpath "C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\rt.jar;C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\i18n.jar;C:\PROGRA~1\Java\JDK17~1.0_6\lib\tools.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic_sp.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic.jar;D:\Oracle\Middleware\oracle_common\modules\net.sf.antcontrib_1.1.0.0_1-0b3\lib\ant-contrib.jar;D:\Oracle\Middleware\wlserver\modules\features\oracle.wls.common.nodemanager_2.0.0.0.jar;D:\Oracle\Middleware\oracle_common\modules\com.oracle.cie.config-wls-online_8.1.0.0.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derbyclient.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derby.jar;D:\Oracle\Middleware\wlserver\server\lib\xqrl.jar" "-Djava.runtime.name=Java(TM) SE Runtime Environment" -Dpython.cachedir=C:\Users\ADMINI~1\AppData\Local\Temp\2\wlstTempAdministrator -Djava.protocol.handler.pkgs=weblogic.utils|weblogic.utils|weblogic.utils -Djava.vm.version=24.65-b04 "-Djava.vm.vendor=Oracle Corporation" -Djava.vendor.url=http://java.oracle.com/ -Dpath.separator=; "-Djava.vm.name=Java HotSpot(TM) 64-Bit Server VM" -Dweblogic.RootDirectory=D:\Oracle\Middleware\user_projects\domains\test1234\. "-Djava.vm.specification.name=Java Virtual Machine Specification" -Djava.runtime.version=1.7.0_67-b01 -Djavax.rmi.CORBA.UtilClass=weblogic.iiop.UtilDelegateImpl -Djava.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment -Djava.endorsed.dirs=C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\endorsed -Dos.arch=amd64 -Djava.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\2\ -Dline.separator=
"-Djava.vm.specification.vendor=Oracle Corporation" -Djava.naming.factory.url.pkgs=weblogic.jndi.factories:weblogic.corba.j2ee.naming.url "-Dos.name=Windows Server 2012 R2" -Dprod.props.file=D:\Oracle\Middleware\wlserver\.product.properties -Dorg.omg.CORBA.ORBSingletonClass=weblogic.corba.orb.ORB -Djava.library.path=C:\PROGRA~1\Java\JDK17~1.0_6\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;;D:\Oracle\Middleware\wlserver\server\native\win\x64;D:\Oracle\Middleware\wlserver\server\bin;D:\Oracle\Middleware\oracle_common\modules\org.apache.ant_1.9.2\bin;C:\PROGRA~1\Java\JDK17~1.0_6\jre\bin;C:\PROGRA~1\Java\JDK17~1.0_6\bin;D:\Oracle\product\12.1.0\dbhome_1\BIN;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WINDOW~1\v1.0\;C:\PROGRA~2\VISUAL~1\bin;C:\PROGRA~1\doxygen\bin;C:\PROGRA~1\TORTOI~1\bin;C:\PROGRA~2\WINDOW~4\8.0\WINDOW~1\;C:\PROGRA~1\MICROS~1\110\Tools\Binn\;D:\Oracle\Middleware\wlserver\server\native\win\x64\oci920_8;. "-Djava.specification.name=Java Platform API Specification" -Djava.class.version=51.0 -Dorg.omg.CORBA.ORBClass=weblogic.corba.orb.ORB -Dos.version=6.3 -Djavax.rmi.CORBA.PortableRemoteObjectClass=weblogic.iiop.PortableRemoteObjectDelegateImpl -Djava.awt.printerjob=sun.awt.windows.WPrinterJob -Djava.specification.version=1.7 -Djava.class.path=C:\PROGRA~1\Java\JDK17~1.0_6\lib\tools.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic_sp.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic.jar;D:\Oracle\Middleware\oracle_common\modules\net.sf.antcontrib_1.1.0.0_1-0b3\lib\ant-contrib.jar;D:\Oracle\Middleware\wlserver\modules\features\oracle.wls.common.nodemanager_2.0.0.0.jar;D:\Oracle\Middleware\oracle_common\modules\com.oracle.cie.config-wls-online_8.1.0.0.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derbyclient.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derby.jar;D:\Oracle\Middleware\wlserver\server\lib\xqrl.jar -Djava.vm.specification.version=1.7 -Dweblogic.management.GenerateDefaultConfig=false -Djava.home=C:\PROGRA~1\Java\JDK17~1.0_6\jre "-Djava.specification.vendor=Oracle Corporation" -Dawt.toolkit=sun.awt.windows.WToolkit "-Djava.vm.info=mixed mode" -Djava.version=1.7.0_67 -Djava.ext.dirs=C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\ext;C:\Windows\Sun\Java\lib\ext "-Djava.vendor=Oracle Corporation" -Djava.vendor.url.bug=http://bugreport.sun.com/bugreport/ -Dweblogic.store.DisableDiskScheduler=true -Dpython.verbose=warning weblogic.Server
更新 2:
通过节点管理器启动 AdminServer (nmStart('AdminServer')) 创建一个常用的“java.exe”进程并使用正确的内存设置启动 AdminServer。但这更令人困惑:为什么“startServer()”会创建一个具有完全不同设置的单独进程(javaw.exe)?为什么我的 AdminServer 设置现在完全不同?启动 AdminServer(开发/生产?)的“正确”方式是什么。对这种环境不满意。
更新 3:
重复进一步测试后,让“startServer()”工作的解决方案基本上如下:根本不用担心节点管理器设置,直接编辑“startWeblogic”脚本,在其中添加额外的java选项(像往常一样通过添加 -D 启动参数)。这一切的原因基本上是全局设置(由节点管理器使用)被完全忽略,请参阅我粘贴的命令行输出。
【问题讨论】:
-
为了清楚起见,您使用 setDOmain 设置了 PermSize 并且在 nodemanager 启动期间没有反映?你在 JAVA_OPTIONS 中添加了吗?您能否尝试更新服务器启动参数以反映新的 PermSize 并重新启动服务器并告诉我们发生了什么?
-
AdminServer 尚未运行(OOM 错误)。这意味着 Web 控制台不可用。你到底在说哪个 JAVA_OPTIONS?修改 setDomainEnv.cmd 以使用更高的 PermSize,同时设置“StartScriptEnabled=true”。
-
将服务器/{adminServerName}/data/nodemanager/startup.properties 修改为 -XX:MaxPermSize=4096m。这是假设它在没有节点管理器的情况下工作。但是,这仅适用于管理员。您可以对其他管理服务器执行相同操作。
-
查看下面的最终答案(我检查了已回答的问题):我的主要问题是理解“nmStart()”与“startServer()”的尴尬行为以及这一切如何与permSize 设置。了解节点管理器如何工作的一般概念(基本知识)。感谢您的时间/调查!
标签: weblogic weblogic12c