怎样最大限度的提高Domino下Web应用的速度

怎样最大限度的提高Domino下Web应用的速度(公式篇)

1、最好用@ClienType代替@UserRoles(4.6 or higher),用于隐藏条件时。

2、在使用@DbColumn和@DbLookup时,用列数代替域名,因为Domino在计算时,会去比较域名,而用列数就会快得多。

3、在使用@DbColumn、@DbCommand和@DbLookup时,尽可能的用 "Cache ",因为它比no-Cache要快。

4、尽量在少量数据的隐藏视图中执行查找公式。在列值中用单个字符串或把数据放在同一列中可以减少试图的数据量。

5、建立搜索视图时把有用的值合并在同一列中,这样可提高多值域的搜索速度。

6、返回值用临时变量,避免出现多余的搜索。在你的公式中有时会用到多次搜索的结果,所以就应该用临时变量代替返回值。

7、用LotusScript的GetView,Search和FTSearch的方法代替公式,这样可以至少提高15%的速度。

 

-----------------------------------------------------

优化Lotus Domino数据库

1. 不保留未读标记

在数据库中保留未读标记需要系统资源,并会大大降低数据库性能。对一些数据库而言,未读标记没有什么作用,比如参考数据库(如Domino帮助数据库)、管理数据库(如Domino目录数据库)或者像日志文件(LOG.NSF)一样需要经常更新的文件,可以考虑禁用未读标记以提高性能。

2. 优化文档表格位图

Notes参考文档信息表格以决定出现在更新的文档中的视图。选择“优化文档表格位图”复选框将表格与在表格中的文档所使用的表单相关联。在视图更新过程中,Notes搜索的视图是包含由此视图中文档使用的表单。维护此关联需要一定开销,但此设置会明显加速大数据库视图的更新。

如果希望使用“表格-表单”关联进行优化,请选择“优化文档表格位图”复选框。更改此设置时,压缩此数据库得以启用。因为此压缩产生数据库的一个临时副本,所以必须确保系统有足够的磁盘空间。也可以使用“load compact -f”命令来启用或禁用位图优化。

此复选项与“基本”附签中“在完全装入图像后再显示此图像”选项不同,此选项是为了快速显示包含图像的文档。Notes用户如果选择“在完全装入图像后再显示此图像”选项,意味着在装入图像的同时阅读文本。因为Notes默认按图像在文档中出现的顺序装入图像,如果一个图像先出现,Notes将在显示文本之前装入它。如果文档带有大图像或低速连接,按顺序装入会减慢文档的显示。另外,用户可以在“场所”文档的“高级”区段指定“装入图像-> 根据请求”,从而仅当用户单击时才显示图像。

3. 不重复使用空闲空间

当从数据库中删除数据后,缺省情况下,Domino用一个图案覆盖磁盘上删除的数据。此图案可防止未授权用户使用实时程序存取数据,这样的覆盖将导致磁盘输入/输出问题,并会影响数据库的性能。选择“不重复使用空闲空间”选项将防止覆盖已被删除的数据,这主要适用于下列情况:

(1) 数据库被实际保护起来,如: 服务器安置在上锁的房间。

(2) 数据库的空间被迅速重新分配,如: 系统数据库(MAIL.BOX)。

(3) 无需考虑数据库的安全性问题,如: 非正式的讨论数据库。

4. 保留LastAccessed属性

Domino数据库存储文档上次修改或阅读的日期。默认情况下,该选项未被选中,数据库仅记录更改文档,而不记录读取。如果选择了“保留LastAccessed属性”复选框,数据库记录读取文档并保存对其所做的更改。此选项控制当最近一次文档存取活动为读取时是否更新“存取时间(在该文件中)”域。如果使用“数据库属性”对话框中的文档归档工具,则应选择“保留LastAccessed属性”,以便根据暂停未用(被读取)日期删除文档。

5. 禁用事务记录

选择此复选框时将关闭所有Domino API函数的所有事务的记录,同时也无法维持整个数据库的完整性和系统上数据库修正的复位,数据库修正可以通过高速前后滚动事务日志以及支持备份和恢复的API重新启动。

6. 允许软删除

在一段时间内用户可以通过访问特殊类型的视图来恢复已经删除的注释,该选项提供了限制此时间的能力。设置“允许软删除”,错误删除的文档可以被简单快速地提取。

7. 不支持指定的答复层次

缺省情况下,每个文档都存储了与父文档或答复文档相关联的信息。只有经常用于视图选择和复制公式的@functions、@AllChildren和@AllDescendants,才使用此存储信息,保留此存储信息会对数据库性能产生很大的负面影响。

要改善数据库性能,可选择此复选框,以便在不使用@functions的数据库中禁用答复层次信息。禁用答复层次信息,对于未使用@AllChildren和@AllDescendants来分层次显示信息的视图和复制公式毫无影响。

如果选择或取消“不支持特定的答复层次信息”选项,必须压缩数据库以使设置生效。在这种情况下,压缩数据库将创建数据库的一个临时拷贝,因而系统必须有足够的磁盘空间来创建这个拷贝。

8. 不允许首页监控

用户可以设置首页监控选项来自动监控数据库,以查找感兴趣的信息。监控数据库将影响数据库性能,尤其是当多个用户这样做时。若要禁止用户监控数据库,应选择数据库属性中的此选项。

管理员也可使用“Domino目录”中的“服务器”文档的“安全性”区段来控制服务器级别的首页监控。

9. 限制“$Updated By”域中的输入项

每个文档包含一个“$Updated By”域,缺省情况下,该域存储与每个文档编辑会话相关联的用户名或服务器名。存储完整的编辑历史记录会占用磁盘空间并减缓视图的更新和复制。要节省磁盘空间并改善数据库性能,应使用数据库属性中的此设置来指定“$Updated By”域可包含的项目数。当“$Updated By”域的项目数达到此极限时,为给最新的项目腾出空间,最陈旧的项目将被删除。

10. 限制“$Revisions”域的输入项

每个文档包含一个“$Revisions”域,缺省情况下,此域存储每个文档编辑会话的日期和时间。当两个用户同时编辑某个副本中的同一个文档或编辑相互复制的不同副本中的同一个文档时,Domino使用此域解决复制或保存冲突。

缺省情况下,“$Revisions”域最多可存储500个编辑会话的历史记录,每个编辑会话需要8字节的磁盘空间。随着时间的推移,“$Revisions”域会越来越大,这将占用更多的磁盘空间并减缓视图的更新和复制。为节省磁盘空间并提高数据库性能,应使用此设置来指定“$Revisions”域可包含的项目数。当“$Revision”域的项目数达到此极限时,最陈旧的项目将被删除以给最新的项目腾出空间。在具有以下特征的数据库应考虑限制“$Revisions”域中的项目:

(1) 数据库包含许多文档;

(2) 数据库经常复制或没有副本;

(3) 数据库中包含不经常编辑的文档。

建议将此设置设为10个项目,如果低于10,将面临复制或保存冲突增多的危险。

除以上数据库“属性-> 高级”附签中的一些设置外,还有数据库“属性-> 基本”中的一些设置也很重要,比如前面提到的“在完全装入图像后再显示此图像”选项,还有“允许在此数据库中使用预先存储的表单”选项。为确保文档正确显示,系统总是默认在文档中存储表单,但是在每个文档中都存储表单将耗费内存和磁盘空间(笔者实际操作时勾选与不选此选项两者磁盘空间的消耗差别最大竟达20倍)。要节省内存和磁盘空间,就要禁止使用存储的表单,尤其是用户试图读取文档而遇到性能问题时。为禁用存储的表单,应取消选择该选项。在禁止使用此选项之前,请先确保了解此数据库的设计特性和如何发挥作用以及数据库如何使用它。

-------------------------------------------------------

通过下面十个步骤,您可以最大限度地提高Domino服务器 的性能:
(一)了解您的配置
Domino管理员应该知道所支持的服务器的配置。任何一个服务器的主要元件有内存、CPU、磁盘(包括逻辑的和物理的),其它元件诸如在线缓冲内存以及磁盘控制器的数量等,也是比较重要的。
下面是一些附加的注意事项,可以使您避免发生配置相关的问题:
1)使用尽可能快的磁盘(例如10,000 RPMs)。
2)在软件RAID上使用硬件RAID,这样速度更快,并且可以减少CPU的负载。
3)一个充足的磁盘子系统可以减少内存需求,因为较少的临时I/O来占用内存。
4)对于Windows NT平台,整理磁盘碎片能充分提高性能。建议每周整理磁盘碎片一次。
5)确保服务器即使是在最大负载时,也至少有4MB内存可用(10 到 20MB更好)。要注意的是,平台的缓存策略有可能会起阻碍作用。
6)标准的服务器配置对于Domino服务器不一定是最优的,重要的事情是足够的磁盘和控制器。您可以使用硬件销售商的NotesBench基准数据作为指导。
(二)通过物理磁盘来分配I/O
通常物理的和逻辑的磁盘结构是人们经常忽略的系统资源,是最经常过载使用的。在很多Domino服务器上提高性能的最好办法是通过不同的物理磁盘来分配I/O。
理想的情况是,将下面与I/O相关的文件放在不同的物理磁盘上:
1)不同平台的页面文件
2)您的NSF文件
3)Domino R5 事务日志
如果您能将它们放在不同的控制器上,那是最好的。这个方法是通过在总线、控制器、端口和磁盘上分发负载来提高I/O吞吐量。因此,最好是使用几个小磁盘,而不是一个容量大的磁盘。特别地,您将R5 事务日志与其它磁盘活动隔离地越开,您的服务器性能就越好。
注意,对于某些系统,例如AS/400,操作系统能在可用的磁盘和控制器间自动优化数据分布 。
(三)经常对性能方面的衡量数据做日志
如果您不做性能方面衡量数据的日志,您就不能衡量您的调整是成功或失败。如果您经常做日志,您不但对您所做的事情有一个更好的理解,更为额外的支出提供了详细的文件证明。
您需要从操作系统和Domino两方面来度量。下面是主要的衡量标准(根据平台):
1)全部的CPU使用率(以百分数表示)。如果该值大于70%或80%,则在很多平台上就会有一个红色的标志来警告,例如Windows NT。
2)可用内存或使用率。记住,当可用内存小于4MB时,减少缓存需求。
3)磁盘序列长度(通常在序列中应该小于2项)和平均磁盘服务时间(对于NT应该小于70%)。
4)页面文件尺寸和使用率。使用率应该正当地低一些,或值得评估您的磁盘子系统的使用率和效率。例如,对于NT平台上的Domino邮件服务器来说,页面使用率一般应小于150页/秒。
5)关于邮件吞吐量、复制、Web服务器活动、数据库活动等方面的Domino统计和事件。
6)Domino日志(log.nsf),很烦琐但的确很有用(注意仅当需要时才启用日志,因为它会影响服务器性能)。
注意经常收集和分析数据,在做重大配置改变之前或之后,捕获性能方面的数据是很必要的。
(四)优化Domino R5
在自动配置和动态重新配置关键参数以达到最大性能方面,Domino R5做了很多工作。下面是关于如何优化Domino R5服务器本身的一些建议:
1)正确设置mailbox的数量。多个mail.box文件可以减少存放邮件和其它邮件相关的活动对mail.box文件的争夺。当您添加第二个mail.box时,就可以很大地改善性能。经验是我们使用一个mail.box支持1~200个用户,两个或更多的mail.box支持200~1000个用户,最多十个mail.box支持1000个以上的用户。
2)对于非分区的系统,让Domino动态设置NSF_Buffer_Pool_Size变量。对于低内存的服务器配置,这一点特别重要,大的缓冲区会妨碍核心的内存管理。
3)对于分区的系统,您需要分配NSF_Buffer_Pool_Size,因为Domino不能自动决定每个分区中实际可用的内存。我们推荐的公式是:(系统内存/分区数量)/4。
4)基于可用内存,让Domino根据需要来分配邮件传输线程(为了本地传输)。
5)根据需要,让Domino路由器来分配邮件传输线程(为了发送到其它服务器)。
6)使用R5事物日志。它提供给您大批完整的数据,可以使服务器快速启动,将性能提高10%~20%。
适当地配置一个Domino R5服务器运行在中档的Windows NT机器上,每分钟能传输20,000条消息(每条消息平均10K字节)!
(五)使用NotesBench基准数据
很多基准只是告诉您销售商想要您知道的东西,但是NotesBench基准却与众不同。 NotesBench基准数据可以让您对不同销售商的不同硬件配置上的Domino容量做一个详细的比较,您甚至可以用这些数据估计出总成本。仔细阅读NotesBench数据和由它得到的详细报告,是一个非常好的收集信息的方法。通过它,您可以优化您的系统配置。检测专家们使用(或未用)的磁盘结构、内核设置、补丁程序等,从他们的系统中得到最大的性能参数。

(六)从信号中分析

信号是用于处理线程的一个通信机制。本质上信号是使用握手机制来决定对资源的使用。当服务器超负荷工作时,管理员可能会从控制台收到信号。下面是通过观察Domino 4.6而得到的一些常见的信号,并解释了从性能方面考虑,它们意味着什么:
1)Collection (0x30B) 和 Collection Queue (0x309).:暗示了CPU和内存达到了瓶颈。最好的解决办法是将管理进程活动延期到空闲的时间,优化I/O子系统。
2)DB (0x245) 和 DB Queue (0x244):暗示了数据库缓存和磁盘I/O 达到了瓶颈。 最好的解决办法是增加更多的内存,优化I/O字系统。启用域级的复制也会有所帮助。
3)BTree (0x255):暗示了怎样存储视图和刷新视图索引的问题。最好的解决办法是将刷新视图索引延期到空闲的时间,优化I/O子系统。

(七)了解服务器过载使用时的症状

对服务器来说典型的问题是速度慢或邮件传输失败,延长了用户的响应时间和查找邮件地址的时间。
为检查邮件传输,您可以通过查看您的磁盘使用时间的百分比和邮件序列的长度。对于R5,您也可以检查 mail.box 文件的数量和本地邮件传输线程的数量。
为了提高响应时间,应尽可能优化与I/O相关的文件在磁盘子系统中分布的方式。
如果地址搜索很慢,可以使用户在自己的客户机上使用轻量目录,这样会减少服务器和网络的负载。您也可以检查姓名搜索缓存(Name Lookup Cache)的点击率,一个好 的点击率值应该是85%。
如果问题是很慢的页面刷新率或不响应的Web服务器,检查HTTP线程的数量和磁盘使用时间的百分比。设置HTTP线程的数量为1:10 (每十个用户使用一个线程)。
如何来确定一个服务器没有被充分使用?对于NT,指数是CPU的使用率低于50%,磁盘访问率低于50%,或者经常有多于200MB的可用内存。但是注意新添加的用户所需要的资源可能不等于您当前用户的平均资源。例如,随着用户数量的增加,每个用户的内存需求会减少,因为固定的内存被分配给了更多的用户。

(八)考虑群集

群集是Domino企业服务器的主要特征。群集能帮助您实现动态负载均衡,在群集中可以自动优化资源的使用。在群集中还可以实现邮件和应用的失效转移,包括Web应用。您可以将Domino支持的任何平台上的R4和R5服务器集合在一个群集中,也可以将分区服务器和未分区的服务器群集在一起。
Domino群集是增加服务器资源的鲁棒性和可靠性的最好方法,也是将R5服务器加入到R4群集中的最安全的方法。
根据您的平台,一个低价格系统的群集能以较低的初始成本提供比一个单独庞大的服务器更好的可靠性。另外,群集大大减少了连接服务器失败的用户数量。例如,在Windows NT平台上,如果一个系统中激活的用户超过750个,我们推荐使用群集。

(九)考虑分区

分区能提高资源使用率和高端Domino系统的可靠性,也可以使您在维持合并利益的同时,按部门或功能来分布服务器。一些组织甚至使用分区来创建“服务级选项”(即将一些重要的经理人员放在一个分区,其他人放在另一个分区)。
通常,系统中分区的数量不应该超过CPU的数量。AS/400系统是一个例外,它非常适合做分区。AS/400平台本身从逻辑上也将分区隔离开,所以即使一个分区坏了,其它的分区仍可以正常工作。

(十)知道何时联合何时分布

除非您有令人信服的理由,否则选择在分布之上联合作为增长策略。联合总是降低成本并提高可靠性:较少的服务器意味着不太复杂的服务器拓扑、较少的服务器对服务器之间的活动、较少的网络流通、较少的复制、服务器之间较少的邮件传输。
什么时候选择分布服务器而不是将它们联合在一起?您可能有地理上的分布要求,本地的服务器以低成本来处理本地的用户和数据。或者您开始的拓展比较小,但是增长很快,所以添加更多的服务器来容纳新用户,或为了更好地利用当前的投资。

你可能感兴趣的:(怎样最大限度的提高Domino下Web应用的速度)