zoukankan      html  css  js  c++  java
  • EBS R12中FND凭证打印警告:OPP响应超时

    接近年关,最近年结忙的飞起,此为背景,今天运维那边反应日记账凭证打印报错,看了下后台请求发现请求有警告。

    查看日志发现报了“并发:OPP响应超时”的警告,这个地方响应超时可能是配置文件中“并发:OPP超时响应”等相关参数的影响,在参数规定的时间内OPP 服务没有及时响应造成的,当然问题的起因可能有深层次的原因,这里我们需要去找一下OPP服务日志。

    那么,怎么去找OPP服务日志呢,我们通过请求号 查询OPP服务日志的位置:

    SELECT FCPP.CONCURRENT_REQUEST_ID REQ_ID,
           FCP.NODE_NAME,
           FCP.LOGFILE_NAME
      FROM FND_CONC_PP_ACTIONS      FCPP,
           FND_CONCURRENT_PROCESSES FCP
     WHERE FCPP.PROCESSOR_ID = FCP.CONCURRENT_PROCESS_ID
       AND FCPP.ACTION_TYPE = 6
       AND FCPP.CONCURRENT_REQUEST_ID = 25168707

    查询到服务日志之后,我们查看服务日志的内容发现,有如下的错误:

    /18/06 5:00:14 PM] [UNEXPECTED] [128085:RT1585526] java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
    at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
    at oracle.apps.xdo.common.xml.XSLT10gR1.invokeProcessXSL(XSLT10gR1.java:580)
    at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:378)
    at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:197)
    at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:156)
    at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:916)
    at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:178)
    at oracle.apps.xdo.template.FOProcessor.createFO(FOProcessor.java:1507)
    at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:913)
    at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:1766)
    at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:1277)
    at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:229)
    at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:153)
    Caused by: java.lang.OutOfMemoryError
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java(Compiled Code))
    at oracle.xdo.parser.v2.XMLOutputStream.flush(XMLOutputStream.java(Inlined Compiled Code))
    at oracle.xdo.parser.v2.XMLOutputStream.write(XMLOutputStream.java(Compiled Code))
    at oracle.xdo.parser.v2.XMLOutputStream.writeChars(XMLOutputStream.java(Compiled Code))
    ...

    那么到这里我们很明显能够看出具体产生问题的原因,是因为在输入较大文件情况下,服务器没有足够的内存来分配,可能是因为在业务高峰期,OPP没有足够的堆栈大小,这个有可能是内存参数过小产生,也有可能是模板文件中的编码导致内存泄露。

    这里可以参考官方文档:Output Post Processor (OPP) Log Contains Error "java.lang.OutOfMemoryError" (文档 ID 1266368.1)

    根据官方文档,有以下几种方法来解决这个问题(这几种方法可以选择执行):

    • 1.登录XML Publisher Administrator职责。
      2.导航到主页 - 管理 - 配置。
      3.在“常规属性”下,选择“临时目录”。
      4.在并发处理节点上选择临时文件位置。这应该比您生成的最大XML数据文件至少大5Gb或20倍。

    • 1.登录XML Publisher Administrator职责。
      2.导航到主页 - 管理 - 配置。
      3.在FO处理属性集下:
      a)使用XML Publisher的XSLT处理器为True。
      b)使XSLT处理器的可扩展功能为False。
      c)将XSLT运行时优化启用为True。

    • 1.作为系统管理员:导航到Concurrent-> Program-> Define。
      2.查询报告:帐户分析报告(例如)。
      3.添加名为ScalableFlag的参数:
      值集:yes_no 
      默认值:是
      选中复选框启用安全性和必需
      不选中复选框显示,或者用户可以在运行时将其关闭。
      令牌需要是ScalableFlag(这是区分大小写的值)。
      注意:对于应用程序总帐和子分类帐会计并发程序定义,请完成以下步骤。

    • 1.确定当前每个OPP进程的堆大小:
    select DEVELOPER_PARAMETERS from FND_CP_SERVICES
    where SERVICE_ID = (select MANAGER_TYPE from FND_CONCURRENT_QUEUES
    where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');

           2.默认值应该是:

    J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx512m

           3.增大每个进程的堆空间到1024

    update FND_CP_SERVICES
    set DEVELOPER_PARAMETERS =
    'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx1024m'
    where SERVICE_ID = (select MANAGER_TYPE from FND_CONCURRENT_QUEUES
    where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');

           4.重启并发管理器

    • 1.导航至系统管理员职责。
      2.导航到Concurrent - Program - Define。
      3.查询XDOTMGEN可执行文件的短名称。
      4.在“选项”字段中,添加诸如-Xmx512m或-Xmx1024m之类的值或其他相关数字以增加堆大小。
      5.保存更改。
      6.重新提交请求。

    End.

    当然官方是希望我们能够按时应用最新的ATG RUP和XDO补丁集,这个就是后话了。

  • 相关阅读:
    maven实现打包带源代码的jar包
    maven实现打包带源代码的jar包
    maven实现打包带源代码的jar包
    Java奇淫巧技之Lombok
    Java奇淫巧技之Lombok
    Java奇淫巧技之Lombok
    基于移动Web的视图引擎实现
    AE错误代码解释
    Visual Studio q启动卡顿
    RabbitMQ安装后,BADARG问题
  • 原文地址:https://www.cnblogs.com/surinfo/p/10456511.html
Copyright © 2011-2022 走看看