0

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

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

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

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

我的编排
(来源:www.columbia.edu 上的 dm2241

这是我的会员循环值的 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>
4

2 回答 2

0

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

要请求 Studio 尝试垃圾收集,回收 Studio 内任何未使用的内存,请单击位于内存栏右侧的垃圾桶图标。单击垃圾回收垃圾桶图标可能会减少 Studio 当前在内部使用的内存量,从而在处理大型项目时可能会提高 Studio 的性能。

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

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

于 2013-09-02T09:35:45.963 回答
0

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

于 2014-04-17T18:44:24.640 回答