高并发高负载情况下常见的 3 种性能问题
By Feng on十月 24, 2013
前言
这篇 blog 是基于处理 oracle 数据库性能问题的经验写就,它是对常见的性能问题做的总结,它的适用范围:
高并发高负载的系统. 需要先申明的是: 对于所有的调优的方法,都是有适用范围的; 所以下面提到的所有的
内容,请” 批判性”阅读.
1. OS swapping/paging 引发的数据库 concurrency 方面的性能问题
Oracle 数据库在工作的时候, 对于 latch/mutex 这样的轻量级的”锁”,我们期望它是可以非常快的获取/释放
的(这些操作都是对内存的操作,而内存的操作正常时候也确实都是很快的). 但是如果 OS 发生了大量的
swapping/paging 的情况下,那么对内存的操作会变慢,那么 latch/mutex 的操作就会变慢,在并发大的情况下
就会发生 hung/slow 的情况.
引发 swapping/paging 的常见情况有:
a). 内存短缺
b). 内存并不短缺; 但短时间内, 有大量的新进程分配了很多内存
c). 拷贝大文件/备份数据库 使得操作系统的高速文件缓存突然激增
对应的调优方式:
Lock SGA, 这样 SGA(相应的 latch/mutex)就会被 pin 在内存里而不受 swapping 的影响.
如果在 SGA 很大的情况下,同时使用 large page(hugepage)技术,减少 latch/mutex 获取/释放的时间.
2. SGA resizing 引发的数据库性能问题
评论5
最新资源