Recent Posts

RSS Feeds

DBA日记 第二部 (32) 外来的和尚好念经 5月1日 上网聊天

1.1.1. 5月1日 在家聊天

今天是51日,劳动节7天长假的第一天。我自从几年前5.1节的时候和老婆去了趟三亚,就决定再也不长假出游了。所以长假期间我一般选择在家休息,每个长假的最后2天才安排在深圳周边玩玩。由于昨晚Richard要对系统的IO做一次小的调整,最近一直担惊受怕的老万十分紧张,怕调整后系统出现严重的问题,所以他希望我今天能帮他盯一天系统。

选择昨天晚上选择优化实施实际上不是一个好主意,今天是5.1长假的第一天,即将入夏的时节,又赶上放假,正是白家电促销的好日子。今天全国的白家电销量应该是一个小高峰,根据业务部门的测算,老万他们这套系统的负载肯定高于430日。选择昨天晚上动手优化的风险十分高,一旦今天出现问题,那么Richard将面临的形势将十分严峻。我一直不理解Richard这么做的真实意图,也许是老外并不知道5.1这个日子的特殊性,也许真的是Richard对昨天的动作十分有把握。不过无论如何,如果是我,绝对不敢选择在CPU这么高的时候单独去优化IO,也许这回我真的遇到了高人了,如果真的是这样,那就太好了,我也可以好好和他切磋切磋。

登录到VPN后,感觉今天系统的状况出奇的好,现在已经是上午的10点左右了,按理说应该是一天中业务量比较大的时段,CPU空闲还有15%左右,IO系统的表现和很好,AVWAIT基本少接近于0AVSERV20左右。难道是Richard的优化起了作用?我马上做了一个STATSPACK的采样,并且和9点的采样生成了一份报告。

由于Statspack的采样很久没有清理了,所以报告生成的很慢。在报告生成的时候,我看了看QQ的在线用户,老万的QQ状态是“忙碌”。我于是发信息过去给老万打了个招呼:“万科,早”。

老万回信息说:“老白,今天的情况异常的好,我看了个把小时了,active的会话数量一直低于80CPU使用率也不高。看样子Richard昨天的优化效果十分明显,别看这老外五大三粗的像个土匪,不过还是有两下子的。”

我说:“按照理论来说,Richard所做的优化操作并不是很合理,不应该会有这样的效果。万科,有没有可能今天的业务量不大?”

老万说:“这一点我也疑问过,所以刚才我给国内几个工贸公司都打了电话,他们反馈回来的信息是今天的产品销售量比昨天普遍略高5-10%。”

这太不正常了,难道昨天晚上Richard还做了什么我不知道的调整?这个时候Statspack报告已经生成完毕了,我马上打开了报告

Load Profile

~~~~~~~~~~~~                            Per Second       Per Transaction

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

                  Redo size:            184,507.91              6,333.90

              Logical reads:            133,335.76              4,577.23

              Block changes:              1,053.27                 36.16

             Physical reads:              2,535.17                 87.03

            Physical writes:                127.19                  4.37

                 User calls:              3,996.10                137.18

                     Parses:                568.89                 19.53

                Hard parses:                 49.98                  1.72

                      Sorts:                 26.44                  0.91

                     Logons:                  0.38                  0.01

                   Executes:                772.16                 26.51

               Transactions:                 29.13

 

  % Blocks changed per Read:    0.79    Recursive Call %:                21.92

 Rollback per transaction %:    0.51       Rows per Sort:              2971.01

 

Instance Efficiency Percentages (Target 100%)

            Buffer Nowait %:   99.98       Redo NoWait %:              100.00

            Buffer  Hit   %:   98.12    In-memory Sort %:               99.99

            Library Hit   %:   98.26        Soft Parse %:               91.22

         Execute to Parse %:   26.32         Latch Hit %:               98.12

Parse CPU to Parse Elapsd %:    8.08     % Non-Parse CPU:               93.36

从单块读的响应时间来看,确实今天的IO系统性能有了十分明显的提升:

                                                                   Avg

                                                     Total Wait   wait    Waits

Event                               Waits   Timeouts   Time (s)   (ms)     /txn

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

db file sequential read         6,508,594          0     41,645      6     62.0

latch free                        983,166          0     12,239     12      9.4

db file scattered read            194,469          0      2,674     14      1.9

我算了一下平均事务响应时间,是732毫秒,比前一阵子的3秒左右有了很大的提升。这真是太不可思议了。我让老万立即对今天的WORK_ORDER表进行一个统计,看看业务量和昨天对比相差多大。老万统计了一下后告诉我从9点到10点的工单量来看,今天的的工单量比430号少15%左右,看来有些工贸公司的量还是略有下降。看样子今天虽然销售量比较大,不过安排送货安装的并不多,也许商场的送货人员也放假了,要等4号才开始工作。不过从另外一个方面考虑,15%的业务量下降也不应该有这么大的效果啊。

我认真看了看Load Profile,突然发现今天报告里的平均事务数量是每秒29个,而前几天是57,也就是说今天系统的平均事务量是30号的一半。从刚才老万他们对工单表的统计来看,不应该有这么大的差异,是什么地方出现了问题呢?

“老万,今天工贸公司放不放假?”,我突然问老万。

“放啊,今天除了值班的都放假,这有什么关系?”,老万疑惑的问我。

我恍然大悟了:“老万,你别忘了,你这个系统除了业务人员用以外,工贸公司的1500个管理岗位也在用啊,而且这1500个管理岗位消耗的系统资源是相当的大,他们总是在做一些统计和分析。今天的现象只是一个暂时性的,等长假结束了,你就会看到情况并不这么乐观。”

老万一听就笑了:“我还真忘了这茬了,这帮大爷经常自己写SQL去做统计,我们每天的主要工作就是杀那帮家伙的会话”。

如果工贸公司的1500个终端没有开的话,系统负载起码少了30%以上,看样子老万是空欢喜了一场,不过我的心情却无比的好,看来我的判断并没有错,仅仅靠Richard的那几招,想要解决问题还是不可能的。

看看时间,已经是中午12点了,我说:“万科,今天下午就没必要盯着了,估计长假前三天都不会有什么问题,4号后可能会有一些工贸公司的人加班,压力会大一些,不过也不会有大的问题,关键是8号。”

老万想了想说:“是啊,看样子这几天也不会有太大的负载,5.1节促销的效果也没有想象的那么明显,又被业务部门忽悠了一把,还增长20%的业务量,都是拍脑袋拍出来的,明显不是那回事。老白,你这几天也没必要盯着了,不过8号你一定帮我盯紧了,8号我预感会发生点什么。”

中午睡了个午觉,一觉醒来已经是3点半了。VPN连过去看了看,系统负载依然很小。看样子这几天确实都不需要怎么关心了。想想也对,以前就出过几次问题,当时是把内网工贸公司的应用停了来应急的,每次都是立竿见影的,一停内网应用,系统马上就缓过来了。

刚上网就发现马工也在网上,我问他在做什么,他说下午他值班,万科自己回家了,不过还是让他盯到5点。小马自己一个人在青岛,也没什么朋友,加班挣点加班费还是挺不错的。正和小马聊着,Richard通过MSN发了一条消息:“Hi,老兄,今天系统十分完美”。

Richard 用了perfect,足以表明他现在的心情。Richard认为今天的性能情况和他昨天的动作有很大关系。我想给他泼泼冷水,不过费了半天脑子,也没有想好怎么说。“5.1长假”这个词汇我用了好几个英文单词去描述,他还是没有听明白什么意思。后来我只好解释说今天就类似他们西方的圣诞新年假期一样,很多业务人员都休息去了,所以今天的系统负载只是平时的60-70%。总算,Richard听明白了我要表达的意思,不过他还是认为优化获得了阶段性的成果。

我想我也很难说服他,老外都是一根筋,你很难去说服他。只有到58日,系统真正体现出了压力,才能让他明白老万他们这个项目的优化并不像他想象的那么简单。以今天的业务量,CPU资源肯定会出现瓶颈

Permalink     1 Comment



评论:

有意思,等8号

发表于 月光无寒 在 2009年07月01日, 05:29 下午 CST #

发表一条评论:
  • HTML语法: 启用