利器OSW (OSWatcher Black Box) 簡介

pxbibm發表於2015-07-27

OSWatcher Black Box, 簡稱OSW,是oracle提供的一個小但是非常有用的工具,它透過呼叫OS自己提供的命令來記錄OS執行時的一些效能引數,比如CPU/Memory/Swap/Network IO/Disk IO相關的資訊。

+++ 為什麼一定要部署OSW?

OSW並不是強制要部署的,並且有很多工具可以提供一樣的功能,比如說mrtg, cacti, sar, nmon, enterprise manger grid control.

但是部署OSW有很多好處:

1. 它比較容易部署,並且容易刪除。
2.
資源消耗比較小,不管是從CPU,記憶體還是磁碟空間來說。
3.
平時不需要維護,並且在發生問題時可以幫我們迅速定位問題是否發生在OS

資料庫是執行在OS之上的,如果OS發生了異常,那麼資料庫肯定也會受到影響;如果我們僅僅從資料庫的角度去分析這樣的問題時,很難有個好結果.

在平時的工作中,有一類問題很常見:在過去的某個時間段,資料庫發生了一些問題,我們往往要找到問題的原因(root cause),之後才能做某些改動來避免它再次發生。對於這樣的問題,OSW是非常有用的,舉幾個小例子:


1.
發生的問題並不是由於OS的異常引起的。這時候如果我們有在發生問題的時候收集的OSW資料,我們就可以立刻排除OS方面,把注意力投向DB/應用層。

2.
對於ORACLE Database Performance的問題,我們往往第一個方向就是排除OS的問題。
比如OS在某個時間段發生了很頻繁的Swapping,那麼記憶體相關的操作就會受到影響,資料庫效能也會下降,表現在AWR中就會發現資料庫有latch/mutex相關的等待。

3.
應用在某個時間段響應非常慢。AWR顯示資料庫非常的空閒,top5等待事件也都是很正常;從CPU,記憶體,Swap,Disk IO方面看也都很正常。後來發現OSW中關於網路的資料顯示,發生問題時有非常多的丟包現象。如果當時沒有收集到OSW的資料,那麼基本上是不可能找到原因了。

4.
又比如某些ORA-04030的錯誤或者CJQ0, P00X, J00X程式不能啟動的問題,如果我們部署了OSW,那麼我們就能立刻知道這些錯誤是不是由於OS的記憶體短缺引起的。

5.
如果某個server process莫名hung住,我們可以透過OSW的資訊來看當時這個程式是不是出於suspend的狀態,是不是佔用了太多的CPU/Memory

6.
某些Listener hung的問題,我們也需要OSW的歷史資訊來進行下一步的分析。

7
. LoginStorm問題:客戶的資料庫系統突然變慢,從應用端,資料庫的ASH,AWR報告中沒有發現任何異常。但是透過OSWps的輸出發現,在發生問題時, oracle serverprocess比平時多了上千個。

實際上,OSW對於我們分析問題是非常有幫助的。如果當前OS上並沒有部署任何的監控軟體,那麼強烈建議DBA來部署OSW。很多重要的生產環境都部署了OSW,在有關於DB Performance的問題時,他們往往會先提交OSW的輸出。

+++ 大家對部署OSW的顧慮往往是:

1. 生產環境已經正常執行了很久了,基於穩妥的考慮,不能隨便安裝軟體

2. OSW會不會帶來副作用

OSW的工作機制是每隔一段時間呼叫OS提供的一些工具,比如ps, vmstat, netstat, mpstat, top;然後把這些工具的輸出列印到檔案裡。它不可避免的會消耗CPU, Disk IO, Disk Space, Memory;但是這些消耗的資源都是非常少的,在大部分的系統裡都是可以忽略的。只有在某些極端情況下,部署OSW才會帶來負面影響:系統已經是非常的忙,CPU使用率在90%以上;磁碟的free space已經沒有了。所以大家的顧慮在大部分的情況下都是不必要的,部署OSW是沒有什麼風險的。

+++ 下面講一下如何在UNIX/LINUX上安裝/部署OSW:

1. 從文件301137.1上下載OSW
2.
隨便放在某個地方(/tmp除外),然後解壓縮。不需要用root許可權
$ tar xvf osw.tar
3.
啟動:
nohup ./startOSWbb.sh 15 120 &
==>
會每隔15秒蒐集一次資料,將結果保留120 小時(5 )
==>
生成的結果會儲存在一個叫archive的目錄中。
==>
請確保您的磁碟空間足夠容納這些資料。
==>
如果您想自動壓縮生成的檔案,請使用下面的命令來啟動OSWatcher
nohup ./startOSWbb.sh 15 120 gzip &

4.
設定私網間通訊檢查:
1)
複製Exampleprivate.net private.net 到同一個目錄下。
2).
private.net中找到您對應的系統平臺,替換下面的private_nodename1 private_nodename2 為具體的私網IP或者主機名
traceroute -r -F private_nodename1
traceroute -r -F private_nodename2
3).
private.net中其它的平臺部分刪除。
4).
千萬不要刪除下面的內容:**************************
rm locks/lock.file

下面是HP平臺上配置好的一個private.net 的例子:

######################################################################
#HP Example
######################################################################
echo "zzz ***"`date`
traceroute -r -F 192.168.1.1
traceroute -r -F 192.168.1.2
######################################################################
rm locks/lock.file

5.
如何關閉?
$ ./stopOSWbb.sh

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1752701/,如需轉載,請註明出處,否則將追究法律責任。

相關文章