【问题标题】:Why is build time of local application affected by network?为什么本地应用的构建时间会受网络影响?
【发布时间】:2013-04-04 13:08:30
【问题描述】:

构建包含多个 JAR、Java 源代码和约 50 个 XP/CC 元素的 XPages 应用程序大约需要几分钟才能通过 WAN 在服务器上构建。我已将应用程序复制到本地,构建时间降至 ~10 秒。

从前几天开始构建本地应用程序非常慢,大约 2-5 分钟。经过一些实验后,有一种解决方法:禁用位置文档中的 TCP 端口 - 它将构建时间缩短到几秒钟。即使它有效,它也无济于事 - 测试需要对用户进行身份验证,因此我需要将设计更改复制到远程或本地服务器 - 这意味着每次都更改位置(在线/离线)。

2013-04-04 更新:我复制了当前位置文档并删除了主服务器和目录服务器。令我惊讶的是,有了这个位置,构建时间又回到了几秒钟——启用了 TCP 端口,因此可以进行复制。更大的惊喜是,将主/目录服务器返回到新位置并没有重现问题 - 实际上它们不会影响性能。我知道这一点是因为我已重命名当前位置文档并且一切正常。据我了解,客户端配置中的“某物”与位置名称相关联。感谢 Simon 的提示,我将进一步调查。

问题仍然悬而未决:我正在寻找一些(eclipse)偏好来控制这种行为 - 在构建本地应用程序期间与服务器进行意外通信。

【问题讨论】:

  • 奇怪。您是否可能在服务器/客户端之间安排了复制并且它正在尝试复制元素?
  • @SimonO'Doherty 我使用计划复制。关闭它后,构建时间仍然很长,几分钟。
  • 根据您的最新更新,您使用的是代理服务器吗?如果是这样,请将其设置为忽略 localhost。
  • @SimonO'Doherty 不,没有代理。
  • 您的应用程序是否使用复合应用程序?

标签: build xpages lotus-notes


【解决方案1】:

解决方案: Teamstudio CIAO 连接到设计师并检查设计元素的每次更新。对我来说似乎缺乏代码优化:它检查当前构建的设计元素(每一个,一个一个)是否应该在 CIAO 配置数据库中控制。

这解释了为什么通过重命名位置文档来解决问题。昨天,当性能问题再次出现时,我感到很失望。幸运的是,我记得当时 CIAO 对那个位置文件的设置。 CIAO 使用 DATA 目录中的teamstudio.ini 文件来配置每个位置文档使用的 CIAO 配置数据库。寻找入口:

CIAOConfigDb[location name]=server name;CIAO\CIAOConfig.nsf

对于连接到服务器(用于复制或本地服务器)的本地副本进行开发,请使用禁用 CIAO 的位置​​文档。

这仅适用于属性ForceConfigLocation=0

【讨论】:

  • 很高兴听到它已排序。 :)
【解决方案2】:

不是解决方案(还没有!),但可能有助于调查。如果您稍后发布结果,我会进一步更新。

调试说明。

将以下内容添加到启动 Designer 客户端的快捷方式中。

-RPARAMS -console -debug -separateSysLogFiles -consoleLog

启动设计器客户端。这也将打开 OSGi 控制台。

重现问题。虽然它仍在 OSGi 控制台中进行,但请键入以下内容:

dump threads

重复此操作 3 次,每次转储完成之间的间隔时间很短。完成后,打开 Heap Dump Analyser 中的三个堆转储(在 IBM_TECHNICAL_SUPPORT 文件夹中)。

它将通过所有三个转储向您显示哪些线程是一致的。查看这些并查找可能看起来是功能区域的包名称/调用。一旦你有了它,你就可以尝试为相关类添加调试。

例如: 假设您注意到“com.ibm.designer.domino.ui.commons”。在线程中,您将编辑 rcpinstall.properties 文件。它将在:

<Notes Install>\Data\workspace\.config\rcpinstall.properties

然后你会添加(从 FINE 开始,如果没有,然后是 FINEST):

com.ibm.designer.domino.ui.commons.level=FINE

现在,当您重新启动设计器客户端时,它将在该包的 workspace\logs 文件夹中生成调试输出。然后,您需要查看跟踪日志以查找延迟发生的时间,并查看它是否引用了相关的设计元素。

【讨论】:

  • 是否可以附加/打开已经运行的设计器的控制台?
  • 我会说可能不会,但我的实际答案是我不知道。
  • 再次感谢,这帮助很大。线程信息中显示的问题:com/ibm/designer/domino/napi/NotesDatabase.NOpenNote 在本机调用堆栈中使用 nhkciao 调用。
【解决方案3】:

可能会同时构建其他开放的应用程序(这在我看来像是一个错误)。请务必关闭所有其他应用程序和基于服务器的副本。打开的应用程序的图标显示在应用程序列表中,即使您关闭并重新打开设计器,它们也会保持打开状态。在 Designer 9 中右键单击应用程序并选择“关闭应用程序”。在 8.5 中,您需要使用 Package Exprorer 进行关闭。

另一个好方法是使用工作集。仅构建开放工作集中的应用程序 (AFAIK)。拥有一个仅包含这个应用程序的工作集(并且该应用程序仅在此工作集中)。

更新 1

如果这些没有帮助,我会删除/重命名 bookmark.nsfCache.NDKdesktop8.ndk。然后只打开这一个应用程序,看看会发生什么。

更新 2

检查是否没有引用的项目。右键单击应用程序并选择“项目属性”。从那里“项目参考”并确保没有选中任何复选框。

更新 3

根据您的更新,我会检查位置文档中以 $ 开头的项目名称。有时保存的 IP 地址等可能会导致此问题。所有这些项目都可以删除。

【讨论】:

  • 不是我的情况:我关闭了自动构建,并通过右键单击应用程序/构建来调用构建 - 所以没有构建其他应用程序。
  • 我通常使用 Project -> Build 所以它可能会有所不同(但我对此表示怀疑)。这也将随机构建其他开放应用程序或其中的一部分。我破坏了生产应用程序,因为它们是在我构建开发应用程序时由我的 ID 签名的。这也发生在我的同事身上。
  • 是的。有时会发生这种情况,必须小心打开的应用程序。特殊情况是底部的清洁动作和收音机 - 默认值是构建所有打开的应用程序,对新手来说很好。
  • 我还使用 Clean 和 Build selected,同时还尝试确保关闭所有打开的应用程序。
【解决方案4】:

如果可能(如果您还没有使用它)尝试使用 Domino 设计器的版本 9(您不必使用 Domino 9 来执行此操作 - 它适用于 Domino 8.5.3)。

对于我们的项目,构建时间从几分钟缩短到几秒钟。我猜他们终于在 IBM 注意到,构建过程过去常常大量依赖与服务器的连接并对其进行处理。 使用新设计师您不必将事件复制到本地。您可以直接在本地服务器上工作。

【讨论】:

  • 我不太自信,我记得生产中的许多兼容性问题(只是)较小的版本差异(设计器优于服务器)。但我会尝试结合“compile for”属性。
  • 自测试版以来,我们在受控环境中使用这种设计器-服务器组合,我们没有遇到任何问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多