sybase系统的一个调优案例

性能调优是个永恒的话题。从我多年的工作经验来看,没有问题的性能几乎是不存在的!不过,有问题并不一定需要调优:可能是没必要,比如用了很好的机器也就遮盖过去了;客户认可也就不需要调了(曾经碰到一个程序运行40分钟,只是一个人使用,她也就忍受了),还有很多方面的原因,在这就不一一解释了。

通常需要解决的性能问题是没有办法了,比如CPU100%了,业务无法正常操作了,一般都是到这个时候才想起需要对性能进行优化了。

今年有幸参加了某银行电子银行系统的优化,前后耗费几个月的时间,最好总算有所成,基本解决了性能问题。

这个系统的性能出现的问题可以是说非常严重,也非常奇怪,在下午,还没有到最高峰的时候,CPU会从20%直接冲到100%,也就几秒钟的时间。但业务量并没有明显的提高,而实际上,CPU100%的时候处理能力是略微下降的。

按照一般的做法,CPU达到100%忙,我们应该增加CPU,但如果那样操作,会有适得其反的效果,这个待稍后解释。

由于严重影响了电子银行系统的正常运行,所以我和Sybase的人都不能走了,天天在现场分析。开始的时候并不是很顺利,通过停止业务的方法,似乎有效果,但似乎有没有效果。当时CPU一到100%,就停业务,要不把个人停了,要不把企业停了,有时候好像CPU就好了,但实际上都没有效果。确切来说是找不到解决的方法。经过几天的分析,认为有些表非常繁忙,Sybase香港建议把忙的表做des绑定。第二天我们执行了这个操作,有一定的效果,但没有解决根本问题。我们监控着,看到数据库的spinlock竞争一直在增加,终于到了90%的时候,CPU又完全100%了!!!

我在前一天找到了一种方法,文档上说,如果碰到CPU异常高,又没有确切原因的话,可以使用这个方法(好像挺玄,嘿嘿)。当时,我觉得很像我们碰到的现象,就把这个东西给Sybase香港人说,他看了,认为不是相关的(所以说,有时候专家的话也不能信)。

在没有办法的时候,我就做了这个操作(是挺大胆的,毕竟是生产系统,如果有负面问题,那就麻烦了!)。结果非常非常的好,CPU马上下来了,且比之前的高峰还有低一些。当时的感觉真的很好,大家终于可以回家了,哈哈!

后来sybase解释说,这个操作改变了内存的替换策略,从而减少了spinlock的竞争,CPU也就不忙了。ASE 15在p6上的spinlock竞争确实非常厉害,这个问题在原先ase 12.5+p5上就没有。

作者: 诺华   发布时间: 2010-10-16

除了扯,没见到任何有价值的东西

作者: w39   发布时间: 2010-10-16