一些用户抱怨在全新的服务器上performance不佳。 在这台机器上唯一的运行是Oracle 10.2。
乍一看,一切都看起来不错:负载是最小的,没有日志。 唯一能find的是vmstat抱怨大量的交换和阻塞进程。 我应该从哪里开始解决这个问题?
# vmstat -S 5 5 kthr memory page disk faults cpu rbw swap free si so pi po fr de sr rm s0 s1 s2 in sy cs us sy id 0 0 0 12420128 16679384 0 0 672 809 809 0 0 -0 2 2 -0 875 572 652 0 0 100 0 7 0 1926560 5871472 0 0 4396 11463 11463 0 0 0 0 0 0 1796 662 1731 0 0 100 0 2 0 1925984 5934624 0 0 19058 13657 13657 0 0 0 0 0 0 4877 1336 6145 0 1 99 0 3 0 1925984 6126144 0 0 12691 13821 13821 0 0 0 0 0 0 3708 1055 4537 0 1 99 0 5 0 1925984 6093776 0 0 6033 15628 15628 0 0 0 0 0 0 2215 745 2386 0 0 100
我很抱歉,但你的vmstat输出并不真正显示任何交换。 首先,“交换”的Solaris定义是当整个过程由于内存压力过大而被调换出来时。 这些是你的专栏和专栏。 除了最具病态的系统之外,你不应该真的看到这个。 pi和po列可以显示“分页”活动。 在其他系统上通常称为“交换”的活动在Solaris术语中称为“分页”。 但是,您需要运行“vmstat -p”来查看api / apo(匿名页面input和匿名页面输出)号码 – 这就是人们通常所说的“交换”。 pi / po列包括基本正常的文件系统活动。 (如内存映射IO)。
要确定有问题的设备,iostat将帮助您。 像“iostat -dxzn 1”。 您可能会看到一些100%繁忙的设备,因为磁盘IO上的进程被阻塞(vmstat b列)。
我太多新手来添加评论,所以我会“回答”…
尝试运行“iostat -xcn 1”,看看你的热块设备是什么。 你使用原始卷还是格式化? ZFS或UFS(我假设这是Solaris 10 …)? 你的磁盘布局是什么?
你换了一下..你有没有调好你的信号灯等? 使用项目或/ etc / system(再假设Solaris 10 ..)?
我通常会开始从用户获取更多细节。 究竟是哪个工作不快? 即使你找回了“一切”,至less要确定一个具体的案例,交易,工作……等等。
然后通过Oracle进行跟踪(例如,如果不是太复杂,则跟踪10046),检查使用哪些服务器资源(哪些表,哪些磁盘上……),找出在哪里花费时间,…
根据我的经验,当我在iostat -znx 3看到100%繁忙的磁盘时,它要么是Oracleconfiguration不良,要么是执行全表扫描等的非最佳执行计划。
另一种方法是查看繁忙磁盘上的数据(表空间或重做或什么?),然后查找昂贵的IO事务或长操作。
顺便说一句 – 你是否重新计算了统计数据等,当你搬到新的服务器? Oracle的dynamic优化器在两个方面都是婊子。
那么,如果你换了,你一般会增加IO等待,这将导致行为迟缓。 什么是一般的负载? 负载可以“感觉”不同,取决于是什么造成的。 由于CPU使用率过高而导致的负载峰值会影响性能,但是如果IO等待很重,15的负载感觉就像是1000。
仔细查看您发布的数字,显示0页换入和换出。 即使使用-S如果您的机器正在交换,您不应该在这些列中看到0。
我敢打赌,你的机器正在做内存映射IO,它具有类似的分页特性,但并不代表颠簸。
我目前无法访问Solaris计算机,因此我将其作为vmstat(1)的手册页的副本,