Sybase ASE 12.5.2高磁盘队列长度

我有一个在Windows 2003上运行的Sybase ASE 12.5.2服务器,对于大多数select查询来说,这个速度非常慢。 该系统是一个2 x Dual Core Xeon,4GB内存和200GB Raid5(10k SAS磁盘),用于具有128MB高速caching+ BBU的LSI megaraid控制器上的数据。

服务器上唯一显而易见的指示是“磁盘读队列长度”在perfmon中位于100。 通常这表示磁盘有问题,但没有任何问题。

任何想法,我可以做什么来找出问题是什么? 我也应该说,我更熟悉Solaris上的Sybase,而不是Windows上的Sybase。

这是一个截图:

替代文字http://img.skitch.com/20090722-t4sgfxd5fb2ck7bbsdjei38uu6.png

这是一个40分钟的sp_sysmon输出。

编辑:显然sp_sysmon输出是太大serverfault问题文本区域。 这是一个链接到完整的输出:[ http://pastie.org/private/t5xqd0vamhz7ynnjuo3cxq] [2 ]

编辑:我改变了屏幕截图,以反映发生了什么好得多。

看看sysmon,你试图做964.2 IOPS,

Total Requested Disk I/Os 964.2 2373.5 2314183

这99.2%的设备占了这个设备,所有的其他设备都做得很less。 你所有的设备都在同一个物理arrays上(D :),但是如果他们什么也不做,这不是问题。

设备:
d:\ DTCLASS \广告\ ads_data01
每个xact计数每秒的ads_data01总数


 Reads APF 459.9 1132.0 1103670 48.1 % Non-APF 495.8 1220.3 1189821 51.8 % Writes 0.8 2.0 1978 0.1 % 

总I / O 956.4 2354.3 2295469 99.2%

950 IOPS应该在10盘raid 5的能力范围内,特别是因为这些都是读取。 如果我们允许保守估计每个主轴100IOPS,那么我们估计这个arrays的IOPS为1000。 编辑:但是,它看起来像我误解了原来的职位,假设有10张光盘! 请让我们知道这个arrays中有多less光盘。

Cache Search Summary Total Cache Hits 1283.3 3158.8 3079829 71.9 % Total Cache Misses 502.2 1236.3 1205348 28.1 %

你有几个caching未命中。 这将导致我怀疑是否有足够的内存分配给ASE。 在使用ASE 12.5的Windows上,ASE(无论是64位还是32位窗口)的内存限制在2.6 GB左右。 你可以让我们看看sp_configure'memory'的输出。 我特别感兴趣的是:

max memory 33792 2950000 1475000 1475000 memory pages(2k) dynamic

您可能有足够的内存分配给ASE,但您没有将其添加到数据caching。 你还可以让我们看看sp_cacheconfig的输出。

您可以从sysmon输出开始看到,您的CPU花费大部分时间处理IO:

引擎繁忙使用CPU繁忙I / O繁忙空闲
发动机0 2.4%79.9%17.7%
发动机1 2.0%75.2%22.8%

你也只有2个引擎分配到ASE,在一个双核心,如果这是一个专用的服务器,你可以升到4。 虽然您的许cocoa能不允许这样做,因为ASE是按照核心许可的。

它看起来像我的实际平均磁盘队列长度是3.554。 该比例设置为100倍的价值。

当这个数字大于团队中的主轴数量时,问题的典型指示就开始了。

我会从sysinternals procmon开始确定磁盘使用情况。 然后我会查看db specfic工具来监视查询(对不起 – 不太了解sybase)

你可以试试这个优化工具来帮助跟踪和排除这个问题,它有14天的试用期。