4

以下问题是由一位即将编写大型 XPages 应用程序的客户提出的。虽然我认为这些问题实际上很广泛以适合 stackoverflow 风格,但它们很有趣,而且这里专家的集体知识可能会比一个人回答它们产生更好的结果:

  1. 有多少并发用户可以在 1 台 Lotus Domino 服务器上使用 XPages 应用程序(Lotus Domino 服务器上有多个应用程序。没有一个)?
  2. 当运行 XPages 应用程序时,我们如何定义和分析 Lotus Domino 服务器上的内存泄漏?
  3. 我们如何以正确的方式编写 XPage 以实现最佳性能并避免内存泄漏?
  4. 不应该使用哪些代码方法和对象?
  5. 当 Lotus Script 开发人员开始为 XPage 编写代码时,典型的错误是什么?最好的做法是什么?
  6. 我们如何在 XPage 上为 10000 - 15000 个用户构建集中的、整合的应用程序?我们需要多少台服务器?在这种情况下如何配置 XPages 应用程序?
  7. 如何平衡用户?

我将提供我的见解,请分享你的

4

2 回答 2

2
  1. 一根弦有多长?这取决于服务器的配置方式。“应用程序”可以是单一形式或数百种形式。只有一个测试可以告诉。一般来说:构建一个高性能服务器,最好是 64 位架构和大量 RAM。使该 RAM可用于 JVM。如果应用程序使用附件,请使用 DAOS,将其放在单独的磁盘上 - 当然,请确保您拥有最新版本的 Domino(撰写本文时为 8.5.3FP1)
  2. 有一个包含内存和 CPU 分析器的XPages Toolbox 。
  3. 这取决于应用程序的类型。巧妙地使用缓存、表达式语言和 bean 的范围而不是 SSJS。当你忘记时,你会泄漏内存.recycle。聘请一位经验丰富的首席开发人员并阅读另外一本本这本书。考虑将运行时间较长的代码线程化,这样用户就无需等待。
  4. 取决于你的需要。Domino 开发的一般经验适用于 db 操作,因此 FTSearch 优于 DBSearch,范围使用优于 @DBColumn 参数。EL 超过 SSJS。
  5. 典型错误包括:XPage 中的所有代码 -> 使用脚本库。太多@dblookup,@dbcolumn 而不是范围。在按钮而不是验证器中验证。违反分解原则。忘记使用 .recycle()。设计应用程序“像旧的 Notes 屏幕”而不是单页交互。部分刷新的使用太少。不使用缓存。面向对象太少(在脚本库中创建函数坟墓)。
  6. 这是问题1-5的总结,没有什么新东西要回答
  7. 当为 XPage 集群 Domino 服务器并在前面放置负载平衡器时,需要将负载平衡器配置为在同一台服务器上保持会话,因此部分刷新和 Ajax 调用会到达为该用户呈现组件树的服务器。
于 2012-06-21T18:36:32.177 回答
1
  1. 这取决于服务器设置,我有 12000 个注册用户的 XPage 外联网,跨越大约 20 个 XPage 应用程序。它运行在 1 个具有 4GB Ram 和四核 cpu 的 Windows 2003 服务器上。这 20 个应用程序的数据量约为 60GB。没有 Daos,没有豆子,只有 SSJS。性能非常出色。因此,当我将此安装升级到 64 位和 Daos 时,应用程序将在更多时扩展。所以 64 位和大量内存是很多用户的关键。

  2. 我没有做任何事情

  3. 确保在执行文档循环时进行回收,使用 openntf.org 调试工具栏在我们为 XPages 提供调试器之前将节省大量时间。

  4. 始终认为,当您在做某事时,这将由多个用户完成,因此请尽量减少查找或 getElementByKey 的数量。尽可能尝试使用 ViewNavigator。

  5. 这完全取决于有多少用户同时使用系统。如果您有 10000 - 15000 个用户并发,那么您必须查看应用程序的功能以及有多少用户将同时使用同一个应用程序。

这就是我对这个问题的见解

于 2012-06-21T19:56:32.640 回答