【问题标题】:Designing XPages applications for large user populations and high performance为大量用户和高性能设计 XPage 应用程序
【发布时间】:2012-06-21 18:14:09
【问题描述】:

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

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

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

【问题讨论】:

  • 我想建议您将问题的范围划分为更多问题:例如主题 2+3、1+6、4+5、7。
  • 我正在考虑这一点,因为它是有道理的。但那是我得到的宣传,所以我把它放在一起(从客户的角度来看也是有道理的)
  • 也看看这个问题的答案:stackoverflow.com/questions/9662069/…

标签: performance xpages


【解决方案1】:
  1. 字符串有多长?这取决于服务器的配置方式。 “应用程序”可以是单一形式或数百种形式。只有一个测试可以告诉。一般来说:构建一个high performance server,最好使用 64 位架构和大量 RAM。使该 RAM available for the JVM。如果应用程序使用附件,请使用 DAOS,将其放在单独的磁盘上 - 当然还要确保您拥有最新版本的 Domino(撰写本文时为 8.5.3FP1)
  2. XPages Toolbox 包含内存和 CPU 分析器。
  3. 这取决于应用程序的类型。巧妙地使用缓存、表达式语言和 bean 的范围而不是 SSJS。您忘记了.recycle 时会泄漏内存。聘请经验丰富的首席开发人员和read the book 以及the other onetwo。考虑将运行时间较长的代码线程化,这样用户就无需等待。
  4. 取决于您的需要。 Domino 开发的一般经验适用于 db 操作,因此 FTSearch 优于 DBSearch,范围使用优于 @DBColumn 参数。 EL 优于 SSJS。
  5. 典型错误包括:XPage 中的所有代码 -> 使用脚本库。太多@dblookup,@dbcolumn 而不是范围。在按钮而不是验证器中验证。违反分解原则。忘记使用 .recycle()。设计应用程序“像旧的 Notes 屏幕”而不是单页交互。部分刷新的使用太少。不使用缓存。面向对象太少(在脚本库中创建函数坟墓)。
  6. 这是对问题 1-5 的总结,没有什么新东西要回答
  7. 当为 XPage 集群 Domino 服务器并在前面放置负载平衡器时,需要将负载平衡器配置为在同一台服务器上保持会话,因此部分刷新和 Ajax 调用会到达为其呈现组件树的服务器用户。

【讨论】:

  • ad 1. - 有大约 10k Notes 对象的内部限制。平均划分为 http 线程会导致 10k/threads - 一个线程中的平均笔记对象数。如果我们以每个平均 XPage(线程)的此类对象的边距计算,最大并发用户数只有几百到一千。
  • Frantisek 如果您能详细解释一下您的意思,我会非常感兴趣?每个线程 10k 个对象导致多达 100 - 1000 个用户?这些对象是什么(XPage 控件、设计元素)?
【解决方案2】:
  1. 这取决于服务器设置,即 XPage 外联网,有 12000 个注册用户,跨越大约 20 个 XPage 应用程序。它运行在 1 个具有 4GB Ram 和四核 cpu 的 Windows 2003 服务器上。这 20 个应用程序的数据量约为 60GB。没有 Daos,没有豆子,只有 SSJS。性能非常好。因此,当我将此安装升级到 64 位和 Daos 时,应用程序将在更多时扩展。所以 64 位和大量内存是很多用户的关键。

  2. 我没有做任何事情

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

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

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

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

【讨论】:

  • 感谢您的贡献!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
相关资源
最近更新 更多