WebLogic Tuxedo Connector 导致内存不足错误
问题描述
使用 WLS 中的 WebLogic Tuxedo Connector (WTC) 导致产生 OutOfMemoryError (OOME)。这是一个常规错误,而且出现错误的原因有许多。 

故障排除
请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。

快速链接 为什么发生此问题?
发生此问题有几个原因。通常,问题原因在于 WLS 或 Tuxedo 端配置错误,有时候是程序自身的错误。检查下列各项以尝试查找并确定引起内存不足异常/错误 (OOME) 的原因。
  1. 检查在命令行上是否分配足够的堆以及系统是否有足够内存。如果 WebLogic Server 一开始只有 128M,那么将该值增大到某个较大值可确保这不是一个问题。
  1. 检查 WLS 端和 Tuxedo 端的配置是否正确:
    1. 验证 WLS 端和 Tuxedo 端没有使用相同的端口号。这种情况在过去引起内存不足异常/错误 (OOME)。

      配置 WLS/WTC 时,本地域端口号应当与 WLS 端口号不同。

    示例:

    1. <NWAddr>//ip:port</NWAddr>

    其中,端口号与用于启动 WLS 的端口号不同。

    1. 检查 dmconfig 文件(Tuxedo 端),确保没有为 LOCAL(本地)和远程(REMOTE)域指定相同的 MTYPE

      WebLogic Tuxedo Connector 要求 Tuxedo 域始终启用编码功能。在 DMCONFIG 文件中,MTYPE 应当始终复位或设置为 NULL

      示例:

    2. 如果设置了 MTYPE,您将看到此错误:
      <Error> <Posix Performance Pack><Uncaught Throwable
      in processSockets java.lang.OutOfMemoryError
      <<no stack trace available>>

    DMCONFIG 文件中,MTYPE 应当始终设置(或复位)为 NULL,因为当您从 java 转向 C 语言时,编码/解码“始终”是必不可少的。为了理解其中原因,只要考虑一下字符串就可以一目了然:字符在 java 语言中占两个字节,而在 C 语言中只占一个字节。

    1. 尝试按照 http://www.weblogic.com/platforms/sun/index.htmlhttp://developer.java.sun.com/developer/bugParade/bugs/4390238.html(需要登录 Sun 网站)说明的方法设置 MaxPermSize 为至少 256M
  1. 如果您看到消息:java.lang.OutOfMemoryError: unable to create new native thread,则说明名为 max_thread_proc 的 Unix 内核设置过小。  max_thread_proc 是单个进程中的最大线程数。 它必须大到能够容纳 Java 应用程序中的所有线程以及虚拟机本身中的部分额外线程。
  1. 现在,您需要启用 WLS 端的调试功能来收集信息:

WLS 6.1:
在 WTC StartUp 类中设置 BDMCONFIG=path_to_my_bdmconfig.xml_file,TraceLevel=100000 并重新启动 WLS
      示例:
      <StartupClass
        Arguments="BDMCONFIG=C:\wls610\wlserver6.1\config\examples\bdmconfig.xml,TraceLevel=100000"
        ClassName="weblogic.wtc.gwt.WTCStartup" Name="WTCStartup" Targets="examplesServer"/>


关于 WLS 6.1 的跟踪级别的文档说明:http://e-docs.bea.com/wls/docs61/wtc_admin/WTC_Admin_troubleshooting.html#1104694
常见问题解答 (FAQ):http://e-docs.bea.com/wls/docs61/wtc_admin/WTC_Admin_troubleshooting.html#1104758

WLS 7.0 和 WLS 8.1:
修改启动脚本中的 JAVA_OPTIONS 以包括以下:JAVA_OPTIONS=-Dweblogic.wtc.TraceLevel=100000

关于跟踪级别的文档说明:http://e-docs.bea.com/wls/docs70/wtc_admin/troubleshooting.html#1104696
常见问题解答 (FAQ):http://e-docs.bea.com/wls/docs70/wtc_admin/troubleshooting.html#1105544

返回页首

背景信息
WTC 提供 WebLogic Server 应用程序和 Tuxedo 服务之间的互操作性。该连接程序在响应服务请求时允许 WebLogic Server 客户端调用 Tuxedo 服务和 Tuxedo 客户端调用 WebLogic Server Enterprise Java Bean (EJB)。有关概述说明,请参阅 http://e-docs.bea.com/wls/docs81/wtc_admin/index.html

返回页首


是否需要更多帮助?

如果您已经理解这个模式,但仍需要其它帮助,您可以:

  1. http://support.bea.com 上查询 AskBEA(例如使用“wtc outofmemoryerror”),以查找其它已发布的解决方案。
  2. http://support.bea.com 上,向 BEA 的某个新闻组中提出更详细具体的问题。

如果这还不能解决您的问题,并且您拥有有效的技术支持合同,您可以通过登录以下网站来打开支持案例:http://support.bea.com


反馈

请给我们提供您的意见,说明此支持诊断模式WebLogic Tuxedo Connector 导致内存不足错误一文对您有如何帮助,您需要的任何解释,以及对 支持诊断模式的新主题的任何要求。


免责声明:

依据 BEA 与您签署的维护和支持协议条款,BEA Systems, Inc. 在本网站上提供技术技巧和修补程序供您使用。虽然您可以将这些信息和代码与您获得 BEA 授权的软件一起使用,但 BEA 并不对所提供的技术技巧和修补程序做任何形式的担保,无论是明确的还是隐含的。

本文档中引用的任何商标是其各自所有者的财产。有关完整的商标信息,请参考您的产品手册。

返回页首