案例描述:
這是一個大型生產系統
問題出現時系統累計大量用戶進程
用戶請求得不到及時響應
連接數很快被用完
數據庫版本:
操作系統:Solaris
日志中記錄如下錯誤信息
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
Tue Aug
WARNING: aiowait timed out
我們知道在SUN的某些版本上異步IO存在問題
代碼:
SQL> show parameter disk_a
NAME TYPE VALUE
disk_asynch_io boolean
針對此問題
alert文件中還記錄了以下錯誤信息:
Tue Aug
WARNING: EINVAL creating segment of size
fix shm parameters in /etc/system or equivalent
該信息說明內核參數設置過小或者和SGA不匹配
我們檢查system配置文件
$ cat /etc/system
set shmsys:shminfo_shmmax=
set shmsys:shminfo_shmmin=
set shmsys:shminfo_shmmni=
set shmsys:shminfo_shmseg=
set semsys:seminfo_semmap=
set semsys:seminfo_semmni=
set semsys:seminfo_semmns=
set semsys:seminfo_semmnu=
set semsys:seminfo_semume=
set semsys:seminfo_semmsl=
我們發現最大共享內存設置僅有
SQL*Plus: Release
Copyright (c)
Connected to:
Oracle
With the Partitioning
JServer Release
SQL> show sga
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
我們發現SGA設置接近
我們用top工具檢查系統運行狀況
代碼:
# /usr/local/bin/top
last pid:
CPU states:
Memory:
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
Memory:
我們發現系統僅有
我們初步作出以下判斷:
SGA設置過大(將近
大量SWAP交換進而引發磁盤問題
WARNING: aiowait timed out
大量交換導致數據庫性能急劇下降
此問題主要是由於SGA設置不當引起
SQL> show sga
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
此時
問題解決完成
調整後系統運行狀況:
代碼:
$ top
last pid:
CPU states:
Memory:
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
該系統調整完以後
一點總結:
這個案例和前面我提到的另外一個極其相似
本身並不復雜
這一類問題應該在數據庫規劃和建設階段就避免掉
其時
關於SUN上的aiowait timed out 有很多總情況及誘因
From:http://tw.wingwit.com/Article/program/Oracle/201311/17109.html