【问题标题】:Cast Iron orchestration memory leakCast Iron 编排内存泄漏
【发布时间】:2013-08-19 15:50:03
【问题描述】:

我尝试在 Studio 中运行 Cast Iron 编排时遇到问题。当我单独保留默认堆大小(512MB)时,作业冻结在大约 39K 记录。当我将堆增加到 1024MB(最大值)时,它会冻结在 80K 记录。所以很明显,每次循环运行时,这项工作都会保留一些东西。但是哪些类型的循环活动会在循环之间保留数据?

我在此处添加了我的编排图像,以展示这项工作看起来是多么简单。只有一个 javascript 函数用于转换值(在读取 XML 活动中)。这是我编写的一个自定义函数,仅使用本地变量(假设函数之间可能存在某种共享范围 - 我对此表示怀疑。)Here it is.

Update 活动也是一个插入(这是 Cast Iron 6.4)。

这些步骤中的某个步骤是否有任何步骤可以保留变量?我正在重用相同的循环变量,它只是已翻译 XML 文件的一个片段(“项目”)。


(来源:dm2241 at www.columbia.edu

这是我的会员循环值的 xsd:

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2012 (x64) (http://www.altova.com) by Colin MacAllister (Columbia Business School) -->
<!--W3C Schema generated by XMLSpy v2012 (x64) (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="rss">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="channel" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="title">
                <xs:simpleType>
                  <xs:restriction base="xs:string"/>
                </xs:simpleType>
              </xs:element>
              <xs:element name="link">
                <xs:simpleType>
                  <xs:restriction base="xs:anyURI"/>
                </xs:simpleType>
              </xs:element>
              <xs:element name="description" type="xs:string"/>
              <xs:element name="pubDate">
                <xs:simpleType>
                  <xs:restriction base="xs:string"/>
                </xs:simpleType>
              </xs:element>
              <xs:element name="generator">
                <xs:simpleType>
                  <xs:restriction base="xs:anyURI"/>
                </xs:simpleType>
              </xs:element>
              <xs:element name="language">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="en"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="cgId" type="xs:unsignedInt"/>
                    <xs:element name="firstName">
                      <xs:simpleType>
                        <xs:restriction base="xs:string"/>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="lastName">
                      <xs:simpleType>
                        <xs:restriction base="xs:string"/>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="email">
                      <xs:simpleType>
                        <xs:restriction base="xs:string"/>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="accountType">
                      <xs:simpleType>
                        <xs:restriction base="xs:string"/>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="member" type="xs:unsignedInt"/>
                    <xs:element name="officer" type="xs:unsignedInt"/>
                    <xs:element name="officerPosition">
                      <xs:simpleType>
                        <xs:restriction base="xs:string"/>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="activeOfficer" type="xs:unsignedInt"/>
                    <xs:element name="membershipEndDate" type="xs:string"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="version" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:decimal"/>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>

【问题讨论】:

    标签: javascript memory xsd


    【解决方案1】:

    在工作室中清除堆内存使用的记录方法之一是 确保在 Preference 对话框中选择了 Show memory usage in status bar 选项,内存条和垃圾桶图标以状态栏的形式显示在 studio 底部。此内存条显示Studio 当前使用了多少内存, 与当前分配给 Studio 的总内存相比。

    请求 Studio 尝试垃圾收集,回收所有未使用的内存 在 Studio 中,单击位于内存条右侧的垃圾桶图标。 单击垃圾收集垃圾桶图标可能会减少内存量 Studio 目前正在内部使用,可能会提高 处理大型项目时的工作室。

    另一个常见的原因是,XML Schema Preferences 设置,XML Schema 首选项部分上的“在内存中为模式分配的子节点级别数”也确定了在内存中分配的子节点级别的数量,指定一个很大的数字子节点级别的数量会对 Studio 的性能产生不利影响,也会导致 OOM 错误。 还要检查“递归节点级别数”上设置的值,指定大量 递归节点级别也会对 Studio 的性能产生不利影响。

    第一个建议是检查这些首选项并优化使用的值,以便为您的项目获得最佳性能。但是,如果这些都没有帮助,那么我建议您联系 IBM 支持,以便他们确定是什么导致了您的特定案例中的瓶颈,并可以帮助您继续。

    【讨论】:

      【解决方案2】:

      尝试使用拆分来分解处理。将拆分活动放在执行查询之后。在拆分之后命名变量并重新映射和必要的输入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        相关资源
        最近更新 更多