技术开发 频道

Rational ClearQuest性能调优

十、网络配置
    为了理解在Rational ClearQuest环境中网络配置的重要性,需要理解下面Rational ClearQuest部署的架构(如图 a)、以及发生在不同组件间的通信过程。 这里的关键是IIS Web 服务器(IIS Web Server)和每个通过ODBC与数据库通信的Rational ClearQuest的本地客户机。这个协议 很“肥胖”,它不适用于广域网(Wide Area Network )通信。如果你正使用CQWeb,你的IIS Web 服务器和你的数据库服务器(database)也应该放在相同的子网中,用高速连接更佳。如果你正用本地CQ客户机取代或增加到你的IIS Web 服务器,这些客户机也需要与数据库服务器尽可能快的进行通信。因此,重要的一点是,在你的Rational ClearQuest客户机与数据库服务器之间,要让“hops” (跳数)最小化。

    
十一、诊断软件性能问题
     Rational CleaQuest 是商业化的今天可获得的最为灵活、最易于配置的缺陷和变更跟踪产品之一,但伴随它的强大,它具有的功能产生好与坏同样可能的结果。一种通常的结果是糟糕的性能表现。如果你为了一个无谓的操作--比如调用一个动作或提交变更(查询所有的记录并生成冗长报告)正历经一个数秒钟的延迟,你接下来可以查看一下这个延迟是否是由于客户端进程(CQ核心进程或者你十一、诊断软件性能问题
Rational CleaQuest 是商业化的今天可获得的最为灵活、最易于配置的缺陷和变更跟踪产品之一,但伴随它的强大,它具有的功能产生好与坏同样可能的结果。一种通常的结果是糟糕的性能表现。如果你为了一个无谓的操作--比如调用一个动作或提交变更(查询所有的记录并生成冗长报告)正历经一个数秒钟的延迟,你接下来可以查看一下这个延迟是否是由于客户端进程(CQ核心进程或者你的hook代码)、数据库服务器进程、或者网络延迟引起的。
 
    为了确定在你的CQ环境中时间是在哪里被消耗掉的,使用跟踪机制(下面讨论),选择API和SQL(在1分钟内),并包括时间戳。通过日志信息,你应该能够确定花费大块时间的地方,从而集中改进它。如果是在SQL中,查一下数据库给你的响应时间,一些SQL响应时间不好的原因包括:
? 不充足的网络带宽/争夺
? 长距离(不推荐WAN操作或不支持WAN操作)
? 域划分(SQL客户端与服务器之间的网络hops (跳数)量减到最少)
? 不充足的数据库平台硬件
? 不合适的indexes数据库表(详细历史)
    如果跟踪涉及到了某些hooks,你应该在hooks提供的功能和与它冲突的表现效果之间权衡取舍。当显示一个表单的时候,如果你看到数据库服务器大量的交易和(或)过多的客户机进程时间,你应该再仔细看你对Reference型字段的使用,根据选择列表和/或你对“重新计算选择列表”的使用来看一下是否你能使你的执行更有效-紧记本页前面提出的指导原则。

    举个例子,有几种方式可实现Dependent Choice Lists (依赖选择表)-从硬编码选择列表hooks到在stateless records一层的依赖。这些方法中的每一个都有它们各自的或优或劣的功能。详细见:“Implementing Dependent Choice Lists in Rational ClearQuest” 为了有助于你的调试,Session 对象支持一种带有字符串变量的名为“OutputDebugSreing”的方法。在Rational ClearQuest安装目录里,有一个dbwin32就是这个方法的应用。当dbwin32激活时,它将显示所有由OutputDebugSreing生成的信息。在Windows,Uinx 和Web(它作为Windows管理员运行在Web服务器中)上,从VB、Perl hooks 和外部脚本得来的这个信息是可用的。在你的hooks中运行dbwin32并增加调用OutputDebugSreing的策略以提供足够的调试能力。当dbwin32没有激活时,信息只进入比特斗(你作为管理员组的成员运行ClearQuest时,它记录在Windows2000中,否则,输出不会被显示出来。

    除此之外,有一个非常重要的跟踪特征,就是允许用户监视一组活动,比如数据交换,License(许可证)交换,API调用,email处理等等。这些跟踪在注册表(在[HKEY_CURRENT_USER\Software\Rational Software\RationalClearQuest\Diagnostic]中)或环境变量中可进行控制。下面举例说明注册表中有关项的设置、以及各项的所有通用设置和定义(每个项及其值都是举例)。 表见下页。
     

"Trace"="LICENSE;SESSION;SQL"
•LICENSE
- licensing operations (许可-许可操作) •DB_CONNECT - db connections (数据库连接) •SESSION - session create/destroy (session创建/消除 ) •SQL - SQL messages (SQL信息)
•EMAIL;EMAIL_VB
- email processing (email进程)
•SYSTEM_UPGRADE
- upgrade operations (升级操作)
•METADATA_INIT
- initialization (初始化)
•API
- API calls, parameter and return values (API调用参数返回值)
•others available too (some unimplemented) (其它可用)
"Behavior"="" - (leave this blank) (离开空格) "Name"="" - (unused) (未使用)
"Report"="MESSAGE_INFO=0x0400;DIAG_FLAGS=-1” •MESSAGE_INFO - controls prefix of each line (控制行前缀)
0x0001: - message number (信息数) 0x0002: - PID (进程标识符)
0x0004: - PPID on Unix, unused on Win32 (Unix上的PPID,Win32上未用) 0x0008: - PGID on Unix, Thread ID on Win32 (Unix上的PPID,Win32上的Thread ID) 0x0010: - machine name (Unix only) (机器名,(只限Unix))
0x0100: - time (in sortable format) 时间(用合适的格式)
0x0200: - date (in sortable format) 日期(用合适的格式)
0x0400: - seconds since initial debug message (secs) (从最初调试信息开始的秒数)
0x0800: - seconds since previous debug message (ticks) (从前一个调试信息开始的秒数)
0x1000: - include label for each item in prefix (包括用于前缀中每一项的标签)
•DIAG_FLAGS=-1 - displays current trace settings at top of trace, used to see all possible settings (显示位于跟踪顶部的当前跟踪设置,用于查看所有可能的设置)
"Output"="ODS" •nil - output to bit bucket (same as empty) (输出到比特斗,等同于空)
•ods - output to OutputDebugString (i.e. dbwin32) •out - output to stdout
•err - output to stderr •cout - output to C++ cout stream •cerr - output to C++ cerr stream?
•C:\… - output to specified file
"EMailSendVB"="ODS” •nil - output to bit bucket (same as empty)
•ods
- output to OutputDebugString (i.e. dbwin32)
•out
- output to stdout •err - output to stderr •cout - output to C++ cout stream •cerr - output to C++ cerr stream
•C:
\- output to specified file

相当于使用下列环境变量,并且支持上述所有相同选项。在这个例子中使用了EVs和 Registry keys,优先取得EVs。

 

0
相关文章