《基于moss_2007和ssrs创建高性能商务报表站点》由会员分享,可在线阅读,更多相关《基于moss_2007和ssrs创建高性能商务报表站点(6页珍藏版)》请在金锄头文库上搜索。
1、基于 MOSS 和 SSRS 创建高性能商务报表站点导语:本文主要讨论和阐述如何结合 Microsoft Office Sharepoint Server2007(下文简称 MOSS)和SQL Server Reporting Services(下文简称 SSRS)技术特点,创建商务报表站点,并根据实际应用环境,对其性能进行分析、优化,使其可以满足高性能的业务要求。前言目前,对于大多数中小企业来说,信息化建设已经深入普及,企业已经能够收集到涵盖面较好的基础数据。但是,除此之外,企业可能还面临着以下各种各样的问题:如缺乏企业内部流程的跟踪和协同工作模式,缺乏在企业与客户之间的更大范围的协同工作模
2、式;企业管理者和企业的客户对于企业内部的生产流程数据缺乏量化的、直观的并且灵活可靠的展现方式。笔者所供职的奥博杰天软件就曾遇到并解决了上述问题。奥博杰天软件是一家获得了CMMI5认证的软件公司,向欧美客户提供全生命周期的软件外包服务。经过多年的实践和积累,公司已经建立起符合 CMMI5要求的、有效的信息收集和处理系统,包括项目组合管理系统(Project Portfolio Management System)等,能够及时收集到各个项目的运行中的基础数据,自动计算出该项目在项目管理和软件工程方面的各项指标,为公司内部有效地进行商务决策提供科学和可靠的依据。但是,如何将这些信息与离岸外包的工作模
3、式进行结合,向客户展现直观的、可比较的项目过程信息,成为了新的挑战。依赖于公司多年在 MOSS上的应用和开发经验,将 MOSS的快速构建信息门户、丰富灵活的信息展现的特性和 SSRS强大的报表运算功能相结合,构建了一个高性能的商务报表站点,为上述问题提供了一个灵活有效的解决方案。对于其他的企业,如果实际的企业需求要求满足诸如文档管理(包括版本控制、集中化管理等),项目管理,企业内部资源搜索,团队合作 Portal,简单的业务流程,在 Web实现一些 LOB前端操作,表单管理,BI 展现等,那么 MOSS将是第一选择。而 SSRS对报表的生成、管理与发布提供了一个统一的平台,可用于创建和管理包含
4、来自关系数据源和多维数据源的数据的表格报表、矩阵报表、图形报表和自由格式报表。可以通过基于 Web 的连接来查看和管理创建的报表。将 MOSS和 SSRS结合起来使用,可以帮助企业灵活自主地构建面向企业内部以及客户的协同工作模式,并可以多角度、可定制、可伸缩的方式为信息消费者提供信息展现和商务报表服务。本文主要论述的是如何通过相关技术手段,为企业以及企业客户提供一个高性能、协同工作报表平台。本文示例基于以下环境:Windows Server 2003 Enterprise SP2,SQL Server2005 SP2及其 Reporting Services, .Net Framework2.
5、0基础类库,MOSS 及其核心服务Windows Sharepoint Services(下文简称 WSS) 3.0,IIS6.0。对于环境的搭建和相关软件的安装,读者可以自行参考相关文档进行。需求说明及 MOSS集成 SSRS机制概述架构设计和客户需求密不可分。以下我们将以实际项目为场景进行介绍。该项目需求是将企业内部的生产数据(已存在数据库)通过报表的形式,展现给不同地域、不同级别的客户,并且需要提供快速,724 小时不间断服务,团队 Portal基于 MOSS。项目总体需求比较清晰,关键因素在于报表平台 SSRS与 MOSS的集成以及整体的性能要求。首先,请看 MOSS与 SSRS的集成
6、机制。 WSS集成 SSRSWSS与 SSRS集成示意图在该集成机制中,最终用户可以直接访问 Report Server站点请求对应报表而不需要访问MOSS站点,也可以通过 MOSS站点访问相关报表页面,同时,开发人员也可以脱离 MOSS站点进行单独的调试等工作,同时,该集成机制使得 MOSS接管了报表服务,报表服务继承了 MOSS的安全和权限,并可以在 MOSS站点中管理报表、模型、数据源、计划和报表历史等。 其他部分架构。该项目主要的开发工作在自定义 Web Part的实现与集成以及企业生产数据的采集、分析等,是一个典型的三层架构模式,而主要的技术优化工作也集中在该部分。集成实现及注意事项
7、 配置 MOSS和 SSRS以创建报表站点MOSS和 SSRS的整合方式有两种:使用 Web Part技术构建全新的信息展现组件;使用MOSS自身的信息整合模式。在第二种方式下,MOSS 的数据库需要保存报表内容,并且需要同步MOSS和 SSRS数据库。本文所述基于第一种方式,这是因为一方面 Web Part技术在 Windows Sharepoint Services(WSS) 2.0 中就已经被引入,较为成熟。另一方面,通过 Web Part进行整合对于报表开发人员来说,可以灵活自由的对报表进行调试而不影响 MOSS站点,同时,也可以将报表单独部署成一个 web站点,最大程度的将 MOSS
8、站点和报表站点解耦。在单独部署报表站点的情况下,可以直接在该报表站点下请求相应的报表,也可以在对应的 MOSS站点下请求该报表。 配置 MOSS站点以集成 SSRS关于基础配置,碍于篇幅,读者可以查阅相关 MSDN文档和教程。这里就主要步骤进行说明。首先,建立相应的环境,包括 MOSS的部署安装等以及报表服务站点。其次,配置 SSRS以获取生产数据。需要注意的是,如果是在域环境下,使用集成安全性,并且使用 Kerberos执行安全委派连接 SQL Server的时候,则需要以域管理员的身份登录,为运行 SQL Server的服务器创建一个有效的服务主题名称(SPN),这样,客户端在执行了正确的
9、 DNS解析之后,Kerberos 会将客户端创建的 SPN委派到活动目录,活动目录会根据获得的SPN进行查找,如果匹配才继续进行后续的相关操作。再次,使用相关报表编辑器如 Visual Studio 2005设计对应的报表,然后将报表部署到对应的站点。最后,开发人员使用 Web Part将报表站点相关报表进行封装并最终使用 Web Part集成至对应的 Sharepoint站点。影响站点性能因素及对应优化措施建议上述项目实现完成之后,在初期的实际测试和运用过程中我们发现,该项目性能方面表现较差。主要表现在以下几个方面: 在多用户并发情况下,系统响应速度下降较为明显。 一段固定时间之后的首次访
10、问站点很慢,平均打开报表时间在 27秒左右。 对于部分数据量比较小的报表,打开速度平均在 2秒左右,但是当数据量上升到一定规模时,性能下降明显。 压力测试显示,在系统运行时间较长时,响应速度明显下降。 在网络带宽较窄时,客户端延迟比较严重。针对上述出现的问题,我们对该项目进行了一系列的优化措施,主要包括: 重新规划系统服务角色,构建良好的拓扑结构。 针对 IIS6.0的工作机制进行相关配置优化。 数据库优化。 代码优化,及时释放相关对象等。 硬件优化,并尽量减少客户端和服务器之间传输的数据量。以下将针对上述措施进行详细叙述。 构建良好的拓扑结构提升站点性能良好的拓扑结构主要是指,对于 SQL
11、Server服务器、SSRS 报表站点和 MOSS站点,要根据需求,综合各方面因素,给相关服务定位明确的职责和角色,以达到分解服务器压力,分离负载,提供持续服务,提升性能的目的。比如,将数据库服务器(用户自定义数据库,MOSS 的内容数据库以及配置数据库),应用程序服务器(MOSS 的共享服务如索引和搜索服务等)以及前端访问服务器分布,在此基础上,分别对上述相关服务器进行配置和优化。读者还可以参考http:/ 通过配置独立的应用程序池和启用工作进程回收机制以提升报表服务性能在使用 IIS6.0发布 Web站点的时候,由于 IIS6.0引入了应用程序池(Application Pool)的概念,
12、对于每一个独立的应用程序池,都对应一个独立的工作进程。为提升站点的性能,维持站点的独立性,应当为 MOSS站点、报表站点均提供一个独立的应用程序池。同时,在为相应站点建立了独立的应用程序域之后,IIS6.0 中还存在一个重要的优化机制工作进程回收。一般来说,IIS 的工作进程回收方式有如下几种:a. 根据运行时间:系统默认是 1740分钟(29 小时)回收一次。b 请求数目:根据客户端的请求数目确定回收机制c. 计划的时间:根据用户设置的固定时间对工作进程回收d 内存(虚拟内存或已使用的内存):当该应用程序对应进程占用的内存或虚拟内存达到用户设置的值时,会启动工作进程回收。在实际使用中我们发现
13、,上述工作进程回收对于站点首次访问的性能影响很大。如果配置不当,造成 MOSS站点或报表站点工作进程频繁回收,而对应工作进程回收之后,首次访问MOSS站点的用户或首次请求报表的用户,用户体验较差。对于上述工作进程回收问题,最佳的做法是设置内存回收机制。我们根据多次反复测试结果及相关文章推荐,将单独的应用程序池的回收内存设置为:最大使用内存为物理内存的1/2,最大虚拟内存为物理内存的 3/4。如下图所示(假设该服务器物理内存为 2G)。工作进程回收配置示例图 数据库优化数据库优化主要是针对 SQL Server的一系列优化措施。通常,展现给客户的报表数据来源于企业原始数据的二次加工,可进行的优化
14、措施和角度非常多,概述如下:a. 企业原始数据库基础数据的优化。要对数据库进行良好的设计,比如表的设计以及表字段的设计,索引的设计。尤其对于报表站点这种查询类为主的站点,数据库的索引设计很关键。比如聚集索引。我们推荐的做法是,建立聚集索引时,最好使用整形列,使用的列越少越好,并且应该根据应用中最常用、累计耗费时间最多的查询条件,来决定如何设置聚集索引,同时索引的顺序也很重要。b. 存储过程的优化。大多数报表数据来源于存储过程,在使用存储过程时,需要注意以下方面:查询条件的设置,比如需要使用索引,那么不要将相关字段包含在函数中,同时应尽量避免对索引字段进行表达式计算等;避免存储过程动态重新编译,
15、可以通过避免对临时表的增删改查的频繁操作或使用表变量等来解决;临时表与表变量的使用,对于临时表与表变量,实际上都是在 tempdb上,优先使用的都是内存(内存够用的情况下),在数据量比较小的情况下,使用表变量对性能提升明显,但是如果临时表本身数据量比较大,并且临时表有针对性的索引的情况下,可以使用临时表,而对于大的存储过程并且本身数据量不大的情况,此时使用表变量将带来非常明显的性能提升。c. 其他措施,读者可以自行查阅相关文档,不再赘述。 分离数据逻辑处理和展现对于报表站点而言,数据逻辑处理和展现是两个重要的环节,而实际中普遍的情况是,开发人员将很多的数据逻辑处理和数据展现处理统统放在存储过程
16、中进行,导致职责不明,并且带来后续的开发和维护很困难,“牵一发动全身”。这种情况下应该进行相应的分离,将数据逻辑处理和展现分开,以达到各司其职,分解压力的目的。 启用 IIS压缩由于报表站点的特殊性,生成的报表是以图片的形式展现出来的,并且由于 MOSS站点采用了 ASP.NET相关技术,这样当客户端请求某个报表的时候,服务器端产生的 HTML数据量就比较可观了,包括许多不需要的的 View State字段和大量的图片。这时,可以采用禁用控件的View State,改变报表中的图片大小等方式解决。同时,还有一种重要的方式:IIS 压缩。启用 IIS压缩之后,在 IIS服务器把页面内容发送给浏览器之前,会在服务器上对内容进行压缩,然后将压缩后的数据发送至浏览器,浏览器接收后会自动进行解压,然后显示。由于传输的数据被压缩了,所以页面内容可以被更快的传送到浏览器,