【问题标题】:XPages performance - 2 apps on same server, 1 runs and 1 doesn'tXPages 性能 - 同一服务器上的 2 个应用程序,1 个运行,1 个不运行
【发布时间】:2014-05-19 08:34:30
【问题描述】:

上周我们一直在做一个关于业务关键 XPage 应用程序的噩梦,突然间它开始爬得很厉害,以至于我必须每天重新启动服务器,即使这样,有些页面仍然可以需要 30 秒才能打开。

服务器有 12GB RAM 和 2 个 CPU,我正在等待再添加 2 个,看看是否有帮助。

数据库中有大约 100,000 个文档,在任何一个视图中显示的文档不超过 50,000 个。 相同的数据库设置为具有更少文档的培训应用程序,即使在主副本爬行时,在同一台服务器上也始终响应。

这个应用程序中有许多视图面板 - 我读过这些面板真的很慢。我应该摆脱它们并用重复控件替换吗?

在包含角色的文档上还有读者字段,以及作者字段,因为它是一个工作流应用程序。

我在周末从后端删除了很多不必要的视图,以帮助加快速度,但这并没有起到什么作用。

有什么想法可以让我检查一下是什么导致了这种巨大的性能损失?它只是在上周才真正变得不可行,但据我所知,设计中没有任何改变,除了我删除了一些旧视图。

【问题讨论】:

  • 三个潜在原因:内存泄漏(你.recycle()你所有的自定义对象),视图序列(使用阅读器字段键)和太多的view.refresh
  • 当我设置 NotesDocument 等笔记对象时,我知道 SSJS(和 Java)中的回收。你对 recycle() all custom objects 是什么意思?
  • 您是否使用对每个文档具有读取权限的用户帐户进行了测试以查看速度?尝试消除 reader 字段的问题。
  • 速度有没有突然的剧烈变化?我的问题是您的 FT 索引是否可能已丢失并且它正在生成临时索引,或者是否有任何最近的开发已移至该服务器,可能使恶意代理陷入无限循环。

标签: performance views xpages repeat


【解决方案1】:

尝试获取有关服务器和应用程序状态的更多信息。

这里总结了硬件故障排除:http://www-10.lotus.com/ldd/dominowiki.nsf/dx/Domino_Server_performance_troubleshooting_best_practices

根据您的经验 - 两个应用程序中只有一个会变慢,这是相当代码问题。最好的办法是分析您的代码:http://www.openntf.org/main.nsf/blog.xsp?permaLink=NHEF-84X8MU

要更深入,您可以开始寻找信号量锁:http://www-01.ibm.com/support/docview.wss?uid=swg21094630,或查看 javadumps:http://lazynotesguy.net/blog/2013/10/04/peeking-inside-jvms-heap-part-2-usage/ 和 NSD http://www-10.lotus.com/ldd/dominowiki.nsf/dx/Using_NSD_A_Practical_Guide/$file/HND202%20-%20LAB.pdf 和垃圾收集器 Best setting for HTTPJVMMaxHeapSize in Domino 8.5.3 64 Bit

presentation 很好地概述了 Domino 故障排除(以及网络上的许多其他问题)。

【讨论】:

    【解决方案2】:

    好的,所以我们通过做很多事情解决了性能问题。我将按照获得的改进顺序列出我们所做的更改,从不太明显的简单调整开始。

    1. 碎片整理 Domino 驱动器 - 它显示为 32% 的碎片,我认为我是赢家,但碎片整理后确实没有好转。尽管 IBM 文档说即使是 1% 的碎片也会导致性能问题。

    2. 查看了应用程序中的所有主要代码,并在可以用 applicationScope 变量替换它们时进行了一些不必要的查找。例如,在搜索页面上,下拉选项之一通过对数据库中的所有文档进行@Unique 查找来获得它的选择。将其更改为关键字并将其放在应用程序范围中。

    3. 删除了对 database.queryAccessRole 的多项检查,并将用户的角色放入 sessionScope。

    4. DB 有 103,000 个文档 - 其中 70,000 个是很小的文档,包含大约 5 个字段。它们不需要被 FTIndex 索引,因此我们将它们移到单独的数据库中,并在需要这些文档时将数据源指向该数据库。 FTIndex 从 500mb 变为 200mb = 更快的索引和搜索,但应用程序的整体性能仍然很糟糕。

    5. 最重要的 - 我终于有时间检查应用程序属性,高级选项卡。我设置了以下选项: 优化文档表映射(运行 copystyle compact) 不要覆盖可用空间 不支持专门的响应层次结构 使用 LZ1 压缩(运行 copystyle compact 并带有更改现有附件的选项 -ZU) 不允许标题监控 将 $UpdatedBy 和 $Revisions 中的条目限制为 10(根据 domino 文档)

    并且也不允许使用存储表单。

    现在我不知道这些选项中哪一个是最大的收获,而且并非所有选项都适用于您自己的应用程序,但是这样做之后,应用程序就会飞起来!它运行起来就像那里根本没有文档一样,视图加载速度超快,文档按应有的方式打开 - 很快,每个人都很开心。

    直到 http 线程被锁定 - 这是我即将发布的另一个问题,所以如果你知道发生了什么,请看看 :-)

    感谢所有建议尝试的人。

    【讨论】:

    • 有趣的是,更改 5(“大的”)改进了很多。很高兴知道这些变化中的哪一个是主要原因。也许您可以将它们一一删除并重新测试,直到再次遇到糟糕的表现? :-)
    • 我猜这将是使用存储表单(禁用此功能)以及优化的文档映射。
    猜你喜欢
    • 2015-04-05
    • 1970-01-01
    • 2011-02-23
    • 2014-12-08
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多