科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用 CSTD 交易监控分析 CICS 交易处理性能

使用 CSTD 交易监控分析 CICS 交易处理性能

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将介绍如何使用CSTD来分析系统的交易处理性能,有关CEMT的用法将在后续的文章中介绍。笔者相信,通过对这两篇文章的理解,您对CICS应用系统的管理维护技能将会再上一个台阶。

作者:ibm 来源:ibm 2007年10月8日

关键字: 3977 应用 技术 中间件

  • 评论
  • 分享微博
  • 分享邮件

前言

TXSeries-CICS是IBM公司的一款高性能的交易处理软件产品,目前已经被广泛应用于银行、移动、电信、保险等关键业务领域,是企业的核心业务系统的构建及运行的平台。

在应用系统的运行过程中,我们往往需要对业务应用程序的运行状况进行监控,获取其运行时状态数据,并通过分析这些数据,了解系统既往及当前的运行状况,并在必要时对应用系统的运行状态做出干涉,从而达到掌握及优化应用系统运行效率、消除系统运行的问题隐患、动态系统管理维护等目的,以使得系统能够始终维持以安全稳定高效的状态运行。

我们知道,在TXSeries-CICS产品中内置了一些实用的交易程序,它们可以读取CICS 域(Region)的运行时配置信息及状态信息,并通过IBM标准的3270终端界面展现给我们。它们虽然并不是CICS应用系统运行时所必需的,但是,这些交易程序对于一个应用系统的运行维护,却往往非常有用处,尤其是对于不能间断运行的生产系统,更是有着积极的意义。

通过调用这些实用交易程序,我们可以获知CICS应用系统从某个时间开始到现在的交易运行状况统计,包括各种CICS资源的开销、交易/程序的平均处理速度、并发请求的峰值、以及当前的处理状况(瞬时)等等。也可以调用这些交易来做一些重要的CICS配置的运行时更新、应用程序调试、系统动态管理等功能。

日常维护中,最常用的CICS内置交易程序主要有两个:CSTD与CEMT。其中CSTD可以用来显示一些重要的有关系统运行的统计数据,比如各种CICS内部资源的开销、交易处理效率等等,以此来帮助用户掌握CICS系统当前的运行状况。而CEMT则用来执行一些重要的CICS系统动态调整管理的功能,比如动态调整应用服务器数目、调整交易队列深度等等。

由于在官方的TXSeries-CICS产品文档中对内置交易的介绍比较有限,很多用法需要用户自己在实际应用中去摸索体会,因此对很多人尤其是初学者来说,能够快速而准确的掌握它们的用法会变得比较困难。

笔者根据工作中长期使用这些内置交易的经验,撰写了两篇文章来比较详细的介绍上述的两个CICS交易(CSTD和CEMT)的用法,期望以此能够对广大的TXSeries-CICS用户的工作有所帮助。本文将介绍如何使用CSTD来分析系统的交易处理性能,有关CEMT的用法将在后续的文章中介绍。笔者相信,通过对这两篇文章的理解,您对CICS应用系统的管理维护技能将会再上一个台阶。

注释:
3270终端是一种典型的"哑终端",它连接并使用IBM主机作为其控制器,具有数据缓冲功能,通常可被用来访问IBM主机系统,可以通过仿真的3270数据流与TXSeries-CICS域进行交互。





回页首


1. CICS内置交易的访问方法

通常来说,访问CICS内置交易主要有以下两种方法:

方法一

使用TXSeries-CICS产品提供的"cicsterm"命令,或使用CICS Universal Client(CUC)/CICS Transaction Gateway(CTG)产品所提供的"cicsterm"命令,开启一个3270仿真终端窗口,通过这个3270仿真终端窗口,用户就可以发出命令直接调用CICS内置交易了。

  • 使用CTG/CUC提供的cicsterm命令来开启一个3270仿真终端窗口:
    	# cicsterm -s=<Server Name>
    	

    这里<Server Name>为在CUC/CTG端定义的服务器名,此名称定义指向要连接的远程CICS域。
  • 使用TXSeries CICS附带的cicsterm命令来开启一个3270仿真终端窗口:
    		# cicsterm -r <Region Name>
    		

    这里<Region Name>为要连接的CICS域的名称。

方法二

使用专业的3270终端仿真工具(如IBM Personal Communications,Hummingbird Connectivity)访问CICS Telnet Server。

这种用法首先需要在CICS 区域中开放一个"Telnet Server",做法如下:


# cicsteld -r <Region Name> -P <Port Number> &

其中,<Region Name>指定了要开启CICS Telnet Server的CICS域的名称;<Port Number>指定要开启的CICS Telnet Server的服务端口号码。

之后,就可以使用仿真的3270终端通过相应IP地址以及上面开放的端口即可连接CICS域,并可以直接调用访问CICS交易,如下图为使用Hummingbird来连接一个CICS Telnet Server:


图1. 访问CICS Telnet Server
图1. 访问CICS Telnet Server

注释:
目前TXSeries-CICS可以在Windows平台及主流的Unix平台(AIX, HP-UX, Solaris)上运行;而CUC/CTG可在Windows平台、主流的Unix平台(AIX, HP-UX, Solaris, Linux)以及IBM主机平台上运行。TXSeries-CICS的命令本身在其所支持的平台上格式是一致的。为描述方便,本文中所有的操作系统命令均以AIX平台上的操作为例。





回页首


2. CSTD操作功能键指引

在使用CSTD交易前,先让我们对操作CICSTERM的功能键做一次简单的了解,在日常的操作中主要会使用到如下几个键位:

  • Enter:
    "回车"键,用于发送指令,并刷新屏幕结果显示。
  • Clear:
    "清除"键,用于从当前的交易退出。
  • PF3:
    "F3"键,用于返回到CSTD的主菜单。
  • PF5:
    "F5"键,停止自动更新(屏幕显示)。
  • PF6:
    "F6"键,开启自动更新(屏幕显示)。
  • PF7:
    "F7"键,显示当前信息的下一屏。
  • PF8:
    "F8"键,显示当前信息的前一屏。

当使用cicsterm命令或3270仿真终端产品连接到指定的CICS Region后,将会显示"黑屏"。这时在光标提示符后输入"CSTD"(注意要用大写),然后按回车键,即可进入CSTD交易的功能选项界面。注意,根据3270终端定义的键值不同,回车键一般为"右Ctrl"(CUC/CTG中的cicsterm命令通常如此。)或"Enter"。如下图:


图2. 调用CSTD交易
图2. 调用CSTD交易




回页首


3. 使用CSTD交易分析交易处理性能

进入CSTD交易主画面

上图中按回车后进入如下的CSTD主菜单画面:


图3. CSTD交易主画面
图3. CSTD交易主画面

上图中各项的简要说明如下:

  • 1 - TS and TD Statistics: "临时存储队列"和"瞬时数据队列"使用情况统计。
  • 2 -- Pool Storage Statistics: 内存池使用情况统计。
  • 3 - Miscellaneous Statistics: 杂项统计。
  • 4 - ISC Details Statistics: 跨系统通讯情况详细统计。
  • 5 - File Statistics: 文件使用情况统计。
  • 6 - Terminal Statistics: 终端统计。
  • 7 -- Program Statistics: 程序执行情况统计。
  • 8 - Transaction Statistics: 交易执行情况统计。
  • 9 - Class Max Task Statistics: 交易类使用情况统计。
  • 10 - ISC Summary Statistics: 跨系统通讯概要统计。
  • 11 - Transaction/Program Rates: 交易/程序执行速度统计。
  • 12 - Set/Display Statistics: 设置统计数据显示。

上述几项中第2、7、8、9、11、12项最为基本常用,在多数情况下对于评价系统的基本性能状况是足够的,因此本文将做详细叙述,同时限于篇幅的关系,其它功能项本文不再做深入讲解。

使用"内存池统计"功能查看CICS内存开销状况

"Pool Storage Statistics"这个功能主要用来查看CICS内部的三种内存区(Region Pool, Task-Private Pool, Task-Shared Pool)的使用情况。界面如下:


图4. CICS内存池使用情况统计画面
图4. CICS内存池使用情况统计画面

说明:
图中第一行左上角"CST2"指的是这个功能的交易的名字。也就是说,你也可以通过在主屏幕的光标提示符后直接输入"CST2"进入这个功能。紧随其后的时间,指示的是这个界面被调出时的时间。

第二行起始所指示的时间指的是最近的统计数据归零的时间,也就是本次统计开始的时间。

在屏幕中上部,我们可以看到两种CICS内存区"Region Pool"以及"Task Shared Pool"的使用情况:

  • "Size"列: 指示定义的内存区大小,以字节计。
  • "Threshold"列: 指示内存区报警阀值,以字节计。如果对此内存区的开销超过这个值,系统将会在CICS控制台日志(console)中写入警告信息。 缺省时这个值应该等于Size*90%。
  • "In Use"列: 指示当前正在使用的内存区大小。
  • "High"列: 指示这个统计时间段内使用内存区的峰值是多少。
  • "Allocated"列: 指示这个统计时间段内,总共分配了多少这类内存区。
  • "Returned"列: 指示在这个统计时间段内,总共回收了多少这类内存区。
  • "PF3=Main Menu": 按"F3"退出。
  • "Enter=Refresh": 按"回车"刷新统计数据。
  • "PF6=Start Autoupdate":按"F6"(每隔60秒)自动刷新屏幕上显示的数据。

在屏幕的中下部分,我们可以看到系统对三种内存区的分配(Allocations)、释放(Deallocations)的操作情况:

  • "Good"列: 在本次统计时段内成功的内存分配(Allocations)或释放(Deallocations)的操作次数。
  • "Bad"列: 在本次统计时段内失败的内存分配(Allocations)或释放(Deallocations)的操作次数。
  • "SOS"列: 在本次统计时段内,内存区的阀值被突破的次数。如果此值显示非"0",则说明要么是内存区相应的阀值设定的过小,要么是在CICS Region中相应的内存区容量配置得过小。

在屏幕的下方,我们可以看到在本次统计时段内发生的:

  • "Task-Private Storage Abends" 域: 发生"Task-Private Storage Abend"错误的次数。
  • "Tasks Using Task-Private" 域: 使用"Task-Private"内存区的交易的个数。

通过上述的统计数据,可以分析出各个CICS内存区是否处于正常的使用状态,比如是否存在内存紧张的情况。





回页首


使用"程序统计"查看程序的运行的基本状况

在上面的画面中按"F3"或"Esc+3"即可退回到"CSTD"的主控制画面,然后选"7"进入"Program Statistics"界面:


图5. 程序统计画面
图5. 程序统计画面

说明:
这个功能主要指示了系统中所有定义的程序(PD)名字,以及它们在本次统计时段内被调用的次数。

  • "Name"列: 指示系统中定义的所有PD的名字。包括CICS产品自身定义的PD。
  • "Run"列: 指示本次统计时段内程序被运行的次数。
  • "Number Programs"域: 指示系统中定义的程序的总数。
  • "Total Programs Run"域:指示本次统计时段内所有程序运行的总数。
  • "PF8=Forward": 按"F8"或"Esc+8"翻屏。

从上面的统计数据中,可以准确的分析出在设定的统计时段内,各个程序(PD)被调用的频度,比如哪些程序是使用频率最高的,哪些程序只在很少的时候被调用,以此可为优化系统提供指导。

使用"交易统计"查看交易运行的基本状况

在CSTD主画面中选"8"进入"Transaction Statistics"画面。


图6. 交易统计画面
图6. 交易统计画面

说明:
在这个画面中,主要显示了系统中所有定义的交易名字,以及每个交易被运行的次数、Abend(异常终止)的次数。

  • "Name"列: 指示交易的名字。
  • "Run"列: 指示本次统计时段内此交易运行的次数。
  • "S Abends"列: 指示本次统计时段内此交易Abend(异常终止)的次数。
  • "Total Transaction"域: 系统中定义的交易总数,包括CICS自定义的交易。
  • "# Run":域: 本次统计时段内系统运行的交易的总次数。
  • "St Abends"域: 本次统计时段内所有Abend交易的总次数。

从上面的统计数据中,可以准确的分析出在设定的统计时段内,各个交易(TD)被调用的频度,比如哪些交易是使用频率最高的,哪些交易只在很少的时候被调用,还有哪些交易发生过Abend错误,以此可为优化系统及定位问题交易提供依据。

使用"交易类统计"来分析各个交易类的运行性能

在CSTD主画面中,选"9"进入"Class Max Task Statistics"。


图7. 交易类统计画面
图7. 交易类统计画面

说明:
在CICS系统中,交易被分为10个类别,交易可以被指定属于从交易类1到交易类10中的某一类,当然,你也可以指定你的交易不属于任何一个类别。这里列出了各个交易类所管理的交易的活动情况。

  • "Max Activ"列: 每个交易类所定义的最大可用的应用服务器数目。
  • "Queue Len"列: 每个交易类所定义的最多可接受的交易请求队列的长度,超过此长度的请求将被"Reject"。这个长度将包括此交易类正在运行的交易数目。
  • "Current"列: 指示每个交易类的当前交易队列长度,包括正在运行的交易和正在排队的交易数目总和。
  • "Peak"列: 指示本次统计时段内,每个交易类的峰值交易队列长度。
  • "At Max"列: 指示本次统计时段内,分配给本交易类的最大应用服务器数目被突破的次数。
  • "Rejects"列: 指示本次统计时段内,每个交易类所"Reject"的交易的总 次数。

上述统计数据对监控系统的运行状态具有重要意义。我们从这些统计数据中可以看到,当前各个交易类所分配的应用服务器资源配置情况(Max Activ和Queue Len);当前各个交易类正在运行的并发交易的数目(Current),以及在本次统计时段内,每个交易类的并发交易的峰值数目(Peak)、是否应用服务器资源配置已被突破(At Max),由此可以看到各个交易类的繁忙程度,并分析交易类的资源配置是否导致了性能瓶颈,以此找到系统性能调优的方向及依据。

如下图红色椭圆中的数据,我们可以看到在本次统计时段内,交易类10的峰值并发交易数目为:154个,当前正在被处理(注意,包括正在排队而尚未运行的交易。)的交易数目为:5个,交易类的最大应用服务器数目被突破的次数为:22079个,这些数据显示在本次统计时段内,系统曾经处于比较繁忙的状况,可考虑调高本交易类最大应用服务器数目配置以解决问题。


图8. 交易类统计的一个例子
图8. 交易类统计的一个例子

使用"交易/程序处理速度统计"来分析系统的交易处理性能在CSTD主画面中,选"11",即进入"Transaction/Program Rates"画面。


图9. 交易/程序处理速度统计
图9. 交易/程序处理速度统计

说明:
这个画面主要显示了本次统计时段内的平均交易或程序处理速度;当前及总共运行的交易或程序的数目等信息。

  • "Running:"域: 指示当前正在运行的任务的数目。
  • "Dispatchable"域: 指示当前正在排队的任务数目。
  • "Since Last Statistics Reset at"域: 指示起始的统计时间。紧随其下的"Transactions" 域及"Programs"域的统计以此时间为基准。
  • "Since Last Screen Refresh at"域: 指示上一次屏幕统计数据刷新的时间。紧随其下的 "Transactions"域及"Programs"域的统计以此时 间为基准。
  • "Run": 指示本次统计时段内的交易或程序运行的次数。
  • "per sec": 指示本次统计时段内的交易或程序处理的速度,即 每秒多少笔交易或程序。

上述统计数据对分析整个交易系统运行的处理性能状况具有重要意义。首先,我们可以看到当前正在运行的交易的数目(Running),如果此数目比较大,则说明当前系统正在承受比较大的压力;如果此数目长时间不发生变化,则说明系统可能处于某种锁定状态,如交易正在等待数据库的锁。

"Dispatchable"域如果不为0,则说明当前交易处理性能比较低下,应该考虑对系统进行优化调整的动作。如果此域的值持续增长,则说明系统交易的处理性能处于非常缓慢甚至是停滞的状态,系统可能正在发生某种锁定。

"per sec"域的值直接显示了系统整体的交易或程序处理速度,我们可以以此来评估系统处理性能的高低。如果此值比较大,如300以上,则说明系统的处理性能很好,可根据此值推算本应用系统的TPC-C值,以及系统的吞吐率。如果此值很小,如20以下,则说明要么系统承受的交易负载很轻,要么系统存在性能瓶颈导致处理效率低下。

设置统计数据采集时段

在CSTD主画面中,选择"12"进入"Set/Display Statistics"屏幕。这里我们可以将统计数据归零、设置统计数据归零的时间间隔。


图10. 统计设置画面
图10. 统计设置画面

说明:

  • "Clear Statistics Counters"域:指示是否清除统计计数器,即统计数据是否归零。
  • "Last Reset"域: 指示本次统计的起始时间。
  • "Next Reset"域: 指示本次统计的结束时间。
  • "Interval"域: 指示每一次统计所持续的时间,缺省为3个小时。
  • "End-of-day"域: 指示一天中第一次统计的起始时间。
  • "Recording"域: 指示本次统计结果数据是否要记录到统计日志中去。

通常我们在收集统计数据时,首先会考虑设定统计发生的时段。比如,如果对系统每天的业务高峰的处理情况统计,则可以做如下设置如图,设置统计的起始时间为:每天上午10点,统计数据为2小时复位一次,即可收集每天上午10点至上午12点的统计数据了。


图11. 设置统计时段的例子
图11. 设置统计时段的例子

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章