如何提高应用的性能幻灯片.ppt

上传人:石*** 文档编号:44764057 上传时间:2022-09-22 格式:PPT 页数:43 大小:2.97MB
返回 下载 相关 举报
如何提高应用的性能幻灯片.ppt_第1页
第1页 / 共43页
如何提高应用的性能幻灯片.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《如何提高应用的性能幻灯片.ppt》由会员分享,可在线阅读,更多相关《如何提高应用的性能幻灯片.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、如何提高应用的性能第1页,共43页,编辑于2022年,星期五概述概述系系统架构上的性能架构上的性能优化化应用架构上的性能用架构上的性能优化化开开发代代码的性能的性能优化化日程安排第2页,共43页,编辑于2022年,星期五性能优化是系统管理的基本要素第3页,共43页,编辑于2022年,星期五优化内容和流程第4页,共43页,编辑于2022年,星期五影响Domino性能的因素影响操作响应时间的因素网络传输时间从客户端到服务器的距离,数据量,网络延时请求处理时间服务器/客户端速度,服务器压力客户端展现时间影响服务器资源消耗的因素服务器工作量点击数,每次点击的处理工作应用的后台任务服务器任务:复制、群集

2、复制、索引等数据量开发人员不一定能决定所有因素但是应用设计确实是重要因素第5页,共43页,编辑于2022年,星期五性能瓶颈可能出现的地方第6页,共43页,编辑于2022年,星期五应用设计之性能原则Do only what you must理解应用部署环境理解应用对网络传输的需求在设计初始就考虑性能问题如果设计上有问题,最好的程序员也不能写出满足要求的应用在现实环境中测试花时间测试生产环境负载例如:实际服务器响应时间时间网络带宽压力以普通用户身份测试,而不是管理员第7页,共43页,编辑于2022年,星期五系统层次的注意点RAID1镜像优于RAID5Domino程序目录和数据目录最好位于不同的磁盘

3、数据库索引和数据库本身位于不同磁盘合理使用Domino系统任务:Update,Replica,Router,AMgr,AdminP,CalConn,Sched,HTTP,RnRMgr启用事务日志可以有更快的重启速度,但占用一定的系统资源DominoR7和8具有更高的性能第8页,共43页,编辑于2022年,星期五Domino新版本-性能优化 R8Native 64-bit Domino(继续支持32位平台)改变群集复制机制对 CPU 做了许多额外的重大改进 对 I/O带宽做了许多改进 对 AdminP 性能做了改进完全支持NSF/DB2Total disk I/O operations per

4、second for LinuxPercent CPU busy for Linux第9页,共43页,编辑于2022年,星期五应用架构的调整点应用的横纵向切分,将一个访问量大的应用分为若干个,如按组织层次分,按地域分等等应用Domino和RDB的集成,将部分结构化数据存储于RDB应用LEI第10页,共43页,编辑于2022年,星期五ND8可通过Composite Application 拆分大数据库分解为多个小的NSF在同一个界面显示Component之间互动第11页,共43页,编辑于2022年,星期五避免超过 20GB的Domino数据库第12页,共43页,编辑于2022年,星期五在慢速网络

5、下,通过Web Services可以提高性能第13页,共43页,编辑于2022年,星期五Web2.0/Ajax提高B/S应用性能与传统的web应用比较传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,Ajax应用将会消除“运行-等待-运行-等待”-web页面交互的固有特性。这种应用是通过引入一个中间媒

6、介来做到的。此中间媒介又称为Ajax引擎,它介于用户层和服务器层之间,似乎看来多增加一层到应用程序将会使得响应更慢,事实却恰恰相反。在开始一个任务开始的时候,浏览器不再是加载页面,而是加载一个用JavaScript编写,折叠在隐藏结构里的Ajax引擎。这个引擎负责给用户展示界面和以用户的身份与服务器通信。Ajax引擎允许用户与应用界面之间进行异步交互,其独立于应用界面与服务器之间的通信。因此用户再也不会看到当一个操作发送后为了等待服务器的响应而出现的空白浏览器窗口和沙漏。第14页,共43页,编辑于2022年,星期五传统Web应用的同步交互过程和Ajax应用的异步交互过程的比较Google在它著

7、名的交互应用程序中使用了Ajax异步通讯,如Google讨论组、Google地图、Google搜索建议、Gmail等亚马逊Flickr第15页,共43页,编辑于2022年,星期五Domino应用设计-性能考虑算法:读写模式视图动态和静态数据数据拆分:归档策略访问历史数据需求不一定需要复杂的归档程序,甚至可以手工归档确保归档正常第16页,共43页,编辑于2022年,星期五Domino应用设计-性能考虑编码遍历视图:遍历程序和视图配合循环嵌套使用离线功能并非所有的工作都必须立即完成可以将部分任务安排在服务器空闲时后台程序必须被监控,保证可以在规定的时间内做完第17页,共43页,编辑于2022年,星

8、期五Domino应用设计-性能考虑缓存对于B/S应用,考虑缓存策略:浏览器缓存一次性缓存Domino服务器缓存对于c/s应用本地复本预先格式化好数据CACHE参数Cache.ndk第18页,共43页,编辑于2022年,星期五Domino应用设计-性能考虑处理好一次性事件对于现有应用,大量改变文档会对性能有预想不到的营销重建索引服务器复制本地复制有计划地变更计划分组改变分时预先警告用户第19页,共43页,编辑于2022年,星期五Domino应用设计-性能考虑处理好一次性事件对于现有应用,大量改变文档会对性能有预想不到的营销重建索引服务器复制本地复制有计划地变更计划分组改变分时预先警告用户第20页

9、,共43页,编辑于2022年,星期五数据库属性数据库属性 视图属性视图属性表单属性表单属性其他编程要素其他编程要素开发方面的性能优化第21页,共43页,编辑于2022年,星期五不保留未读标记 不覆盖空闲空间 保留LastAccessed 属性 不支持指定的答复层次 Web访问:需要SSL连接 数据库属性第22页,共43页,编辑于2022年,星期五跟踪读和未读的文档会影响应用程序的性能。例如,假设您有一个有1,000,000 份文档的知识数据库。有10,000名用户访问该数据库,其中许多用户使用选择的复制公式本地复制该数据库。当访问服务器上的数据库的用户最初打开数据库时会遇到延迟,因为该程序必须

10、读取未读标记表,以确定显示哪些文档为读/未读文档。要禁用这一功能,选择数据库属性对话框高级标签上的不保留未读标记选项。不保留未读标记第23页,共43页,编辑于2022年,星期五有未有未读标记对100,000条目,3000用户,每秒1.5次访问性能第24页,共43页,编辑于2022年,星期五无未无未读标记对100,000条目,3000用户,每秒5次访问性能第25页,共43页,编辑于2022年,星期五覆盖空闲空间将对数据库性能产生负面影响。做为一种安全性措施,当您删除Notes文档时,Notes覆盖已删除的数据,以防止任何人重新检索到它。此时,用户是否可以检索到删除的文档已经无关紧要的,因为数据自

11、身已经被破坏了。大多数情况下我们无需保留覆盖的数据。什么时候需要覆盖删除的数据呢:服务器和数据库的物理访问受到损害,从而非法用户可以使用它们。数据库未加密或ACL使数据库易于遭受攻击。企业部署了需要这一功能的安全性策略。如果您的企业、服务器或数据库未出现以上任何一种情形,那么考虑禁用这一功能选择不覆盖空闲空间选项。不覆盖空闲空间不覆盖空闲空间第26页,共43页,编辑于2022年,星期五Domino跟踪最近访问文档的日期(也就是读或修改文档的最后时间)。缺省情况下,数据库只跟踪最后修改文档的时间,但通过选择维持LastAccessed属性功能,数据库还可以跟踪最后读取文档的时间。为了实现最佳的应

12、用程序性能,您希望取消选定这一功能。但是,这一功能对正在按条件归档文档的用户很有用。我们可以使用维持LastAccessed属性功能,找出最后访问文档的时间,以确定哪些文档要被归档。我们可以保留LastAccessed属性来设置归档特性。LastAccessed属性不适用于Web应用程序。维持维持LastAccessed属性属性第27页,共43页,编辑于2022年,星期五Web访问:需要SSL连接选项为每个Web事务提供一个SSL(安全套接层)连接,从而对客户机和服务器之间传输的所有数据都进行了加密。在您实现SSL之后,您和您的用户将体验到近10%的性能下降。例如,假设您有使用SSL对所有表格

13、数据进行加密的表格。该表格包含一个DbLookup 公式。SSL对客户机和服务器之间的每次事务进行加密,因此,除了对表格数据进行加密之外,SSL还对查询事务进行加密。可以选择使用SSL的部分Web访问:需要访问:需要SSL连接连接第28页,共43页,编辑于2022年,星期五时间/日期敏感的公式(选择或列公式)阅读者名称字段ODBC 访问 视图属性第29页,共43页,编辑于2022年,星期五时间/日期敏感的视图是一种包含具有时间/日期公式(如Modified 或Now)的列或具有时间/日期公式的选择公式的视图。这些视图可以提供强大的功能,但它们也是高成本的性能方法。每隔15分钟,Domino服务

14、器运行更新任务来刷新数据库中的所有视图索引。系统把包含期间(15分钟)修改的文档的所有视图标记为过时视图。并且所有时间/日期敏感的视图被标记为将要过时的视图。因此,除了更新您合理假设需要更新的视图外,索引指示器还需要更新所有时间/日期敏感的视图。这些视图不能被刷新;它们必须重建。但普通的时间/日期敏感的视图需要10-50秒来刷新。可以设置为一段时间后自动刷新时间/日期敏感的视图是一项非常有用(但极其昂贵)的功能,因此请小心使用。时间/日期敏感的公式(选择或列公式)第30页,共43页,编辑于2022年,星期五检查日志文件如果您不能确定刷新或重建视图的时间,请使用日志文件。在服务器配置文件中选择L

15、og_update=2,以记录索引指示器刷新/重建视图的时间。时间/日期备选方案在选择公式中使用 Text。使Index程序对此列不敏感。创建其他条件缩小视图所包含的内容 创建额外的标记缩小视图所包含的内容 时间/日期敏感的公式(选择或列公式)第31页,共43页,编辑于2022年,星期五列排序视图列上的每个排序箭头增加了视图索引以及它用于刷新该视图的时间。从用户界面和维护角度来看,最好是拥有大量排序箭头的单一视图,而不是多个视图。从性能角度来看,关键是避免向视图添加过多的排序箭头且不减少视图的整体数量。时间/日期敏感的公式(选择或列公式)第32页,共43页,编辑于2022年,星期五ODBC访问

16、属性“在索引中产生唯一的关键字”为数据库的相互关联提供唯一的关键字。显著缩小了视图的大小。例如,如果在数据库中只有50个独一无二的类别,这种隐藏式查找视图将只包括50份文档而不是10,000份。ODBC访问第33页,共43页,编辑于2022年,星期五只有一种表单属性真正影响应用程序的性能:自动刷新字段。如果在表单中激活了自动刷新功能,每次从一个字段移动到另一个字段时,自动刷新功能更新所有先前的字段。这一功能将影响应用程序的性能。对于包含验证公式的简单表单来说,自动刷新功能几乎不会影响性能。对于较复杂的表单来说,考虑使用退出事件而不是自动刷新。表单属性第34页,共43页,编辑于2022年,星期五

17、前台程序是从应用程序的用户界面(UI)运行的程序,例如,从操作菜单手动运行一项代理。这类程序的优势在于易于诊断,因为您可以通过手工测试很容易地确定程序运行良好和低效率运行。前台程序的性能问题经常与字段、按钮、代理相关。后台程序是在后台运行的程序。这包括预定的代理,它不时成为与系统性能相关的故障的来源。要测试后台程序,审视您的日志是否异常,如完成一项任务的长时间流逝。如果您正在测试的后台程序是代理,检查代理日志,查看代理是如何很好地完成其任务的。前台/后台编程第35页,共43页,编辑于2022年,星期五编程时开发人员最容易犯的一个错误是不能使用临时变量作为检索数据结果的存储。最明显的一个例子是依

18、靠DbLookup 公式结果的程序。如果您的程序使用要查找多次的数据,那么将该数据设为局部变量。现在您可以根据需要多次使用这一数据,包括:检查错误条件时 将数据分解成更小的单元时(例如,多值列表)对数据进行排序时 另一个典型例子是拥有大量数据和大量用户访问的文档,用户可以通过点击按钮,以不同的方式对数据进行排序。这种功能旨在模似悬浮的视图排序功能,但发生在大文档的内部。很明显,这是一个将您的大量数据设为局部变量,然后对局部变量进行排序的非常恰如其分的场景。它带来的性能方面的差异非常大。最后,第三个例子是查找数据库中特定名称的视图的程序。您可能使用db.views 属性进行循环查找,但您可以通过

19、第一次设定局部变量,如viewLIST=db.views来缩短程序运行时间,然后您可以反复使用该临时变量以实现最佳的性能。临时变量第36页,共43页,编辑于2022年,星期五限制文档中计算的次数可以提升性能。文档中计算执行的次数越多,程序运行的速度就越慢。无论什么时候您以读模式、以编辑模式、或从读模式切换到编辑模式时,系统都要进行其它计算。用户应该了解以读模式打开文件和以编辑模式打开文件所用时间的比例,从而确定要减少的字段/计算。如果文件经常读取,而不是编辑 在这种情况下,系统触发DbLookup和DbColumn公式,从而字段包含这些程序公式在读模式下不要运行。例如,您可以在检查IsDocB

20、eingEdited 的IF语句中把这类公式用括号括起来。关键字字段是这一程序的首要候选对象,因为它们经常包含DbLookup或DbColumn公式,例如,一个称为Klist的关键字字段可能有以下公式:If(IsDocBeingEdited;DbColumn(Notes;ViewName;1);kList)如果文件经常读取,然后切换到编辑模式 如果用户将文件切换到编辑模式,使用postModeChange事件强迫文件刷新。此外,选择关键性字段选项“文件刷新选项。”在选定该选项之后,当用户从读模式切换到编辑模式时,文件自动刷新一次并强迫关键性字段重新求值。如果文件经常以编辑模式打开 在这种情形下

21、,您可以希望尽可能多的把昂贵(性能方面)的程序转移到按钮中,从而频繁的编辑不会陷入困境。这假设即使在编辑文件时,大多数用户不需要更改所有关键性字段。计算字段第37页,共43页,编辑于2022年,星期五通过选择表单属性的自动刷新字段选项,您可以设置字段值为自动刷新。这样做会对您的性能产生负面影响,因为每次用户把鼠标移到表格字段时所有以前的字段都重新计算。这一繁重计算的目的是首先检查Input Translation和Input Validation公式,但实际上所有程序都运行。选择关键字段属性的“当关键字改变时刷新域”选项。这提供了胜过表单对话框中自动刷新域选项的性能,因为文档只在关键字字段中的

22、值更改后才刷新,而不是任何值更改后都刷新。刷新字段值第38页,共43页,编辑于2022年,星期五在获得一组文档方面,谁是表现最好的最常使用的LotusScript 方法-我们比较以下常用的LotusScript方法:db.FTSearch db.Search view.GetAllDocumentsByKey view.GetDocumentByKey 在这类测试过程中,使用不同大小的数据库(10,000、100,000和1,000,000份文档)来了解每种方法是如何很好地运行的。LotusScript方法第39页,共43页,编辑于2022年,星期五db.FTSearch方法在对数据库的全文检

23、索后,db.FTSearch返回文档集合。它运行良好,但需要当前数据库进行全文索引。此外,根据服务器的Notes.ini 设置,可以对返回的文件集合的大小施加了限制。当然,如果您的查找是基于多文本字段的内容,那么这是您唯一切实可行的选择。db.Search方法在使用视图选择公式进行数据库查找之后,db.Search返回文档集合。对于大数据库中的小规模集合来说这是相对低效率的执行程序。例如,如果您的数据库中有100,000份文档并且您只需查找5或10份文档,您可能希望避免使用db.Search。在另一方面,它不需要全文索引和预先创建的视图,因此它是一种非常方便的查询方法。例如,如果您对几乎不能控

24、制的数据库进行查询,这可能是您唯一可靠的选择。LotusScript方法第40页,共43页,编辑于2022年,星期五view.GetAllDocumentsByKey方法方法这种方法一般是检索文件集合最快的方式。唯一的缺点是需要建立相关的视图。但是,只要您精简了您的视图设计和不使用昂贵的时间/日期敏感的公式,这些视图对性能和磁盘空间的影响应可以降低以最小,程序使用view.GetAllDocumentsByKey从这些视图获得文件集合的速度将非常迅速。通常,当遍历使用任何这些方法检索到的大量文件时,您的程序应使用set doc=DocumentCollection.GetNextDocumen

25、t(doc)而不是 set doc=DocumentCollection.GetNthDocument 其中i从1增加到DocumentCollection.count。对于小文档集合来说,性能下降为最小;但对于大文档集合来说、或者许多用户同时运行的程序来说会影响性能,它使GetNth成为不明智的选择。GetNth方法通常适用于您想要从集合中挑选文档的情形,而不是简单地遍历整个集合。view.GetDocumentByKey方法方法这是唯一一种不将一组文档保存到内存中的方法。view.GetDocumentByKey而是使用已经构建的视图索引作为其集合并且一次只把一份文档放到视图中。这种方法与

26、view.AutoUpdate=False一同使用,它非常迅速且不需要内存来保存可能的大文件集合。LotusScript方法第41页,共43页,编辑于2022年,星期五大规模的子表单是低效率的执行程序。大规模的子表单会影响应用程序的性能。如果您在应用程序中未多次使用大规模的子表单,考虑在每个表单中重复这类字段,而不是使用子表单。使用较少的字段。在文档中使用较少的字段与性能相关,而不是文档的大小。使用具有较多数据的较少字段,如多值字段,而不是使用较少数据的比较多的字段可以提升应用程序的性能。由于许多传统的编程人员对Notes/Domino应用程序开发不熟悉,这可能一些概念直观,但实际测试很明显地

27、验证了这一概念。使用view.Autoupdate=False 来阻止视图刷新。正如前面介绍,同时使用view.GetDocumentByKey方法和这一属性可以是高效率的执行程序。使用StampAll方法来立即修改大量文档。当您需要使用静态值来标记大量文档时这种方法极其有效,如当前日期/时间或值的标记集。ForAll 语句是遍历循环的最快方法。固定数组是比动态数组更卓越的执行性能。动态数组是比固定数组稍微低效率的执行性能,但要看动态数组的规模是否恰如其分;在您选择固定还是动态数组之前请预以权衡。事件、共享的要素和其它事件、共享的要素和其它第42页,共43页,编辑于2022年,星期五谢谢大家第43页,共43页,编辑于2022年,星期五

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁