Archive for 三月, 2007
应用决定性能
最近接触了几个调优的case, 很有感触。
自己没有开发人员的客户,上线的业务系统,或者由于选择的开发商不是很有经验,或者没有很好的前期检查、测试, 都是上线后发现问题很多,系统负载大,影响业务运行。
有开发人员的,对于选择产品,上线前测试都多多少少做了一些工作。
在系统架构,数据库开发方面都不会很差,可能在业务运行一段时间后,因为数据量问题引起性能下降,需要调优。
自己没有开发人员的,在引进系统方面不是很了解,或许别的原因(比如上级指定产品),导致使用的产品开发不完善,架构不合理,系统上线就面临问题。
这些都说明压力测试是多么重要,无论用什么方式获得的软件产品, 在上线前,只要充分进行压力测试,问题都可以发现。
想想以前开发的软件,都是简单的c/s,哪儿有考虑并发,压力?
现在一般都是三层架构,并发压力大,如果不充分考虑各种因素,开发完成后,可能发现距离上线还有很大差距。
也许这些也是数据库顾问可以做的工作。
要认真开始做功课了
早上去乘公交车的路上, 突然发念: 要认真做功课了.
每月初一,初八,十四,十五,十八, 二十四,二十五, 二十八,二十九,三十.
持素, 念地藏菩萨本愿经一部.
虽然前面也要求自己念,但是还是没有发心, 没有认真去做.
今天看上人对地藏经的讲解,很有收获.
买新手机
昨晚想到,最坏的情况就是对方不打过来,1000也拿不到,重买一个. 上次备份以来的资料丢失.
果然,就是这个结果.
早上送走妹妹后,打了几次过去, 估计是关机了, 因为都是移动的短信提示.
决定重新买一个二手的.
网上查了一下,还是去虬江路.
发现这里大量ibm笔记本. 最后在上次买的地方买了个二手的,1600, 加上一个带usb口的存储卡200. 共1800, 成色还算可以.
回来把2月份的备份恢复.基本上联系人,软件都有.
手机被偷
下午去买菜时,手机被新疆人偷了.
两个手里提着菜, 手机在上衣侧口袋里,被偷走了.
到家发现不见了, 回去到各个买东西的地方询问, 当然是都没有.
回到家,老婆说打我手机打通了, 是新疆的 ,像个小孩, 要2000, 她说太贵了,只要上面的资料.
后来小偷说要1000. 我老婆仍然说太贵了. 后来口出秽语, 要给他找妓女,就不要钱了,老婆生气就挂了.
我回家了解后,再打过去,仍然是要给他找妓女. (听口音,就是一个小孩,很容易听成女的.)找到了给他打电话. ^*%!@…
想到报警,马上被否定了,有用吗? 想起对面楼上楼下因为噪音叫来110, 警察要证据.
况且对新疆人,警察好像也没有办法的.
因为还有别的事情,就没有去理他. 如果他还想要1000块,自然会打过来.
继续调优
今天在压力大时做statspack,分析下 library cache 等待位于top 1. 每秒 hard parse 17, parse 90
使用三层架构,但没有使用连接池(真是少见).
判断是soft parse, hard parse 过多引起library cache严重等待.
1)减少hard parse.
修改程序。
2)减少soft parse.
修改应用。尽量使用sp. 客户端调用sp.
3)启用连接缓冲池。可以减少soft parse.
性能调优的一天
早上赶到客户那里. 服务器cpu 0% idle. 满负荷运行. 连接数达到800.
2cpu, 8G ram. hp-ux , oracle 9202.
三层架构应用. 没有使用weblogic的连接池.
通过v$system_event,发现大量 cache buffers chains等待. 应该是有热块.
col owner for a20
col segment_name for a20
col segment_type for a5
select distinct a.owner,a.segment_name,a.segment_type from
dba_extents a,
(select dbarfil,dbablk
from (select dbarfil,dbablk
from x$bh order by tch desc) where rownum < 11) b
where a.RELATIVE_FNO = b.dbarfil
and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk;
查到几个表.
数据量不大的放到buffer里面.重启数据库.
把weblogic启用连接池,启动100,最多300. 明天看效果.
注意:
1. 开始就使用statspack报告.便于前后比较.
2.调优过程中,始终运行osw.记录os情况,比如cpu,io.便于后面分析.
翻译校对的一天
合作伙伴有本很好的oracle调优的书,已经翻译了(韩文), 需要校对一下.
校对真是一件累活,主谓宾状定顺序,用词等等都要看. 自己基本要理解意思,尤其是关键地方.
从这本书内容看,目前市面上没有类似的. 如果翻译得好,可能会成为经典.
听说这个月可以交付印刷.
期待这本书.
一个性能调优case
环境:hpux 11.11,oracle 9204 rac.
应用:2层架构. 150-200个session. 7×24小时.
性能问题: 突然客户端速度慢.不能忍受.
1.检查cpu, io
top, iostat
cpu使用率70%左右, 不是瓶颈.
iostat,有一个硬盘Io特别严重,其他压力不大. 对比以前正常情况的数据,基本正常.
2.沟通,了解到, 有新增应用.但是已经2个月了,都比较正常.
3.针对是2层架构情况,在测试机器上启动客户端,用dbms_system.set_ev跟踪10046事件,在客户端做简单操作,看等待情况.
发现排在前面的都是一个查询语句,走得是全表扫描.
查此表数据量,二十多万,查此表索引,发现没有索引.
初步判断与此相关.
跟踪一个正常的客户端,跟踪15分钟,再按照fchelc排序,耗时最长的大部分也是这个语句.
最长达6秒. 基本确定是全表扫描引起.
沟通发现,这个表数据量在3个月内增加到二十多万. 和实际情况相符. 随着数据量增大,全表扫描已经成为瓶颈.
建议: 在此字段上创建索引.
效果:创建后,客户端响应时间明显检查.
把blogbus上的文章移植到mt了
花了一点时间.先从blogbus导出到wordpress格式,再用wp-export-mt.php转换为mt格式的文本,通过mt的导入/导出完成.
看看以前的帖子,往事如烟,又好像历历在目.
3.14日记
本来安排调休下午半天,客户数据库有问题赶去,到下午3点离开,直接去沪太路汽车站,接母亲和妹妹。
在车站等了十几分钟。看着一辆辆客车驶入,临近的,长途的,车上下来形形色色的人,操着各样的方言,打着招呼,取行李。 上海如果是一个盒子,那么这里也是一个入口了,不过这里来的大部分是社会底层的,和机场的不一样,好多是周边省份来这里打工的农民。
四点二十长途车到达。
没想到他们带了2个大袋子,就是装化肥的袋子,一个大行李箱,母亲手里还提着个纸盒子,说里面都是鸡蛋(上次路上打破了好多鸡蛋,这次为了保护鸡蛋母亲竟然手提着)。
旁边停着一排出租车,但是司机好像都不在。等了一会,过来一个司机问去哪儿,他和另外一个叽咕了半天,好像是路线怎么走之类,然后让我们上车。
妹妹没有精神,母亲说在路上着凉了。
车子在高架上走走停停,发现出租车在慢速时,也是计时的(原以为停下来才计时)。
到家,收拾了一下行礼,母亲竟然带了好多土豆,菠菜。还有新杀的三只鸡。收拾鸡的时候,不小心把手指剁了一下。
—————————
每次煮半只鸡,所以要把鸡分开。
结果不小心砍到小指了。当即看到鲜血流出来,浓浓的。
让老婆包了一下,感觉还在流,想到可能比较深,就赶紧到附近北蔡地段医院去。
到了医院,医生问了一下情况,说要缝几针,交款,取药,医生准备缝了。
先打了麻药,然后轻轻揉揉,让药过去,马上就开始缝了。我拿出pda,准备读金刚经。
非常疼。我努力专心读经,分散注意力。同时想,受苦即消苦。忍着吧。
缝了三针。
然后医生嘱咐,24小时内打一阵破伤风。3-5天换一次药,2周后拆线。
想到明天要上班,所以决定马上去仁济医院打针。
挂号取药,到注射室,很久没有肌注了,有些紧张呢。护士让我放松,我倒是想放松,可是就是放不下来,护士说,你叫什么名字? 我刚把名字说完,感觉屁股一阵疼,护士已经扎针了。
呵呵,真是有办法,叫我名字分散我注意力。
到家时已经8点多了。
手指受伤,包扎50多, 破伤风一阵70多。加上挂号,共花了130左右。还好,有医保卡,自己只掏了十几块。