Performance 为大量用户群和高性能设计XPages应用程序

Performance 为大量用户群和高性能设计XPages应用程序,performance,xpages,Performance,Xpages,以下问题由一位即将编写大规模XPages应用程序的客户提出。虽然我认为这些问题实际上非常广泛,适合stackoverflow的风格,但它们很有趣,这里专家的集体知识可能比一个人回答的结果更好: 有多少concurent用户可以在一台LotusDomino服务器上使用XPages应用程序(LotusDomino服务器上有几个应用程序,而不是一个) 在运行XPages应用程序时,我们如何定义和分析lotusdomino服务器上的内存泄漏 我们如何以正确的方式编写XPages以获得最佳性能并避免内存泄

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

  • 有多少concurent用户可以在一台LotusDomino服务器上使用XPages应用程序(LotusDomino服务器上有几个应用程序,而不是一个)
  • 在运行XPages应用程序时,我们如何定义和分析lotusdomino服务器上的内存泄漏
  • 我们如何以正确的方式编写XPages以获得最佳性能并避免内存泄漏
  • 哪些代码方法和对象不应使用
  • 当LotusScript开发人员开始为XPages编写代码时,典型的错误是什么?最好的做法是什么
  • 我们如何在XPages上为10000-15000个用户构建集中、整合的应用程序?我们需要多少服务器?在这种情况下,如何配置XPages应用程序
  • 如何平衡用户 我将提供我的见解,请分享你的见解

  • 一根绳子有多长?这取决于服务器的配置方式。“申请”可以是一张表格,也可以是数百张表格。只有测试才能判断。一般来说:构建一个64位体系结构和大量RAM的系统。做那只公羊。如果应用程序使用附件,请使用DAO,将其放在一个单独的磁盘上——当然,还要确保您拥有最新版本的Domino(撰写本文时为8.5.3FP1)
  • 有一个包含内存和CPU探查器的
  • 这取决于应用程序的类型。巧妙地使用作用域来缓存、表达式语言和bean,而不是SSJS。你忘记了
    而泄漏内存。回收
    。雇佣一位经验丰富的首席开发人员,同时也包括。考虑线程不再运行代码,这样用户就不必等待了。
    
  • 这取决于你的需要。Domino开发的一般经验教训适用于数据库操作,因此FTSearch优于DBSearch,scope usage优于@DBColumn以获取参数。EL超过SSJS
  • 典型错误包括:XPages->use脚本库中的所有代码。@dblookup太多,@dbcolumn而不是作用域。在按钮而不是验证器中进行验证。违反分解原则。忘记使用.recycle()。设计应用程序“像旧的Notes屏幕”而不是单页交互。部分刷新的使用太少。不使用缓存。对象定向太少(在脚本库中装入函数graves)
  • 这是问题1-5的总结,没有什么新的答案
  • 当为XPages集群Domino服务器并将负载平衡器放在前面时,需要将负载平衡器配置为在同一服务器上保持会话,以便部分刷新和Ajax调用到达为该用户呈现组件树的服务器
  • 这取决于服务器设置,我有一个XPage外联网,拥有12000名注册用户,跨越大约20个XPage应用程序。它运行在1台Windows2003服务器上,带有4GB内存和四核cpu。这20个应用程序的数据量约为60GB。没有DAO,没有bean,只有SSJ。性能非常好。因此,当我将此安装升级到64位和Daos时,应用程序将在更多的时候扩展。所以64位和大量的Ram是许多用户的关键

  • 我没有做过任何事情

  • 确保在执行文档循环时重新设置样式,使用openntf.org调试工具栏—在我们为XPages设置调试器之前,它将节省大量时间

  • 始终认为,当您在做一些事情时,这将由多个用户完成,所以请尝试减少查找或getElementByKey的数量。尽可能使用ViewNavigator

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


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

    感谢你的贡献!我想建议你们把问题的范围分成更多的问题:例如,题目2+3,1+6,4+5,7。我在考虑这个问题,因为它是有意义的。但这就是我得到的广告,所以我把它放在一起(从客户的角度来看也是有意义的)看看这个问题的答案:广告1大约有10k Notes对象的内部限制。如果将http线程等分,则会导致10k/线程—一个线程中notes对象的平均数量。如果我们以平均每个XPage(线程)十个这样的对象的余量计算,最大并发用户数只有几百到一千个。如果你能解释更多你的意思,我会非常感兴趣的?每个线程10k的对象最多可带来100-1000个用户?这些对象是什么(XPage控件、设计元素)?