關於aio的設定的討論
之前在博文中分享過一個ora錯誤。
對於此,根據日誌分析了相關的ora錯誤,但是從客戶的角度還是希望能夠提前做些什麼,所以aio的設定就成為刻不容緩的一個任務。
但是對於aio的設定大家還是存在一定的分歧。在此貼出來供大家討論,在oracle官方文件中也沒有詳細的說明和建議。
首先aio的設定在/etc/sysctl.conf就有設定,裡面會指定一個最大值,即aio-max-nr
對於aio的監控可以從下面的地方進行監控。
cat /proc/sys/fs/aio-max-nr
在系統中會根據系統的使用情況有對應的變化。
關於async-io的監控,下面的一個部落格中有比較好的監控方案。可以參考一下
http://www.pythian.com/blog/troubleshooting-ora-27090-async-io-errors/
對於aio的設定有幾種不同的爭論。
在伺服器上存在兩個資料庫例項,一個session佔用在9000左右,另外一個訪問量極小,不到100個session的使用情況。
根據aio的設定。有一種計算思路為:
Machine AIO consumption : 2,558,565
Machine AIO max limit : 3,145,728
Number of sessions connected PRODB1 : 9136
Number of sessions connected PRODB2 : 35
所以根據平均值得出每個session佔用的aio值為 : 2558565/9171 = 278.98… 我們假設為 280
PRODB1和PRODB2的最大session設定為: 27040,所以根據計算得出需要設定的aio值為: 27040x280 = 7,571,200
對此還有一種不同的思路,即從作業系統層面,能夠和資料庫進行直接對映的就是程式了,資料庫中的程式和作業系統程式由對應的對映關係,所以我們應該基於程式,即process來進行計算。
在專有伺服器模式下,計算思路即為:
Machine AIO consumption : 2,558,565
Machine AIO max limit : 3,145,728
Number of sessions connected PRODB1 : 9136
Number of sessions connected PRODB2 : 35
所以根據平均值得出每個程式process佔用的aio值為 : 2558565/9171 = 278.98… 我們假設為 280
PRODB1和PRODB2的最大程式設定設定為: 18000+2000,所以根據計算得出需要設定的aio值為: 20000x280 = 5,600,000
看似不經意的調整,但是結果卻差別很大。
還有一種思路就是透過active session對應的程式情況進行計算,比如9000個session,但是active session只有1500左右,我們在這個時候假設併發為1500
根據併發情況得到一個aio的平均值,然後進行計算。
Machine AIO consumption : 2,558,565
Machine AIO max limit : 3,145,728
Number of sessions connected PRODB1 : 9136 這個時候併發session為1500左右
Number of sessions connected PRODB2 : 35 這個時候假設併發為35
所以根據平均值得出每個程式process佔用的aio值為 : 2558565/1535 = 1666.81759… 我們假設為1666,相比之前的計算就差別很大了。
然後根據這個值來計算對應的aio最大值設定。假設這個時候最大的程式數為18000+2000=20000,所以根據計算得到的aio值就為:33,320,000
這個計算的值相比之前就差別太大了。
不過從不同的計算計算方式來看,個人還是傾向於第2種計算。當然這個問題也是持開放的態度,大家也可以提供意見,大家一起討論。
當然不能給客戶這三種思路讓他們選,我們也是把前兩種的思路結合起來,給了一個基本平均的值,這樣下來aio的設定不會奇高,增長幅度也差不多在30%左右,但是還是有一定幅度的提升, 對於其它的引數影響也不會有很大的梯度。
之後就是建議客戶計劃進行資料庫例項的重啟使得這些引數變更生效了。
對於此,根據日誌分析了相關的ora錯誤,但是從客戶的角度還是希望能夠提前做些什麼,所以aio的設定就成為刻不容緩的一個任務。
但是對於aio的設定大家還是存在一定的分歧。在此貼出來供大家討論,在oracle官方文件中也沒有詳細的說明和建議。
首先aio的設定在/etc/sysctl.conf就有設定,裡面會指定一個最大值,即aio-max-nr
對於aio的監控可以從下面的地方進行監控。
cat /proc/sys/fs/aio-max-nr
在系統中會根據系統的使用情況有對應的變化。
關於async-io的監控,下面的一個部落格中有比較好的監控方案。可以參考一下
http://www.pythian.com/blog/troubleshooting-ora-27090-async-io-errors/
對於aio的設定有幾種不同的爭論。
在伺服器上存在兩個資料庫例項,一個session佔用在9000左右,另外一個訪問量極小,不到100個session的使用情況。
根據aio的設定。有一種計算思路為:
Machine AIO consumption : 2,558,565
Machine AIO max limit : 3,145,728
Number of sessions connected PRODB1 : 9136
Number of sessions connected PRODB2 : 35
所以根據平均值得出每個session佔用的aio值為 : 2558565/9171 = 278.98… 我們假設為 280
PRODB1和PRODB2的最大session設定為: 27040,所以根據計算得出需要設定的aio值為: 27040x280 = 7,571,200
對此還有一種不同的思路,即從作業系統層面,能夠和資料庫進行直接對映的就是程式了,資料庫中的程式和作業系統程式由對應的對映關係,所以我們應該基於程式,即process來進行計算。
在專有伺服器模式下,計算思路即為:
Machine AIO consumption : 2,558,565
Machine AIO max limit : 3,145,728
Number of sessions connected PRODB1 : 9136
Number of sessions connected PRODB2 : 35
所以根據平均值得出每個程式process佔用的aio值為 : 2558565/9171 = 278.98… 我們假設為 280
PRODB1和PRODB2的最大程式設定設定為: 18000+2000,所以根據計算得出需要設定的aio值為: 20000x280 = 5,600,000
看似不經意的調整,但是結果卻差別很大。
還有一種思路就是透過active session對應的程式情況進行計算,比如9000個session,但是active session只有1500左右,我們在這個時候假設併發為1500
根據併發情況得到一個aio的平均值,然後進行計算。
Machine AIO consumption : 2,558,565
Machine AIO max limit : 3,145,728
Number of sessions connected PRODB1 : 9136 這個時候併發session為1500左右
Number of sessions connected PRODB2 : 35 這個時候假設併發為35
所以根據平均值得出每個程式process佔用的aio值為 : 2558565/1535 = 1666.81759… 我們假設為1666,相比之前的計算就差別很大了。
然後根據這個值來計算對應的aio最大值設定。假設這個時候最大的程式數為18000+2000=20000,所以根據計算得到的aio值就為:33,320,000
這個計算的值相比之前就差別太大了。
不過從不同的計算計算方式來看,個人還是傾向於第2種計算。當然這個問題也是持開放的態度,大家也可以提供意見,大家一起討論。
當然不能給客戶這三種思路讓他們選,我們也是把前兩種的思路結合起來,給了一個基本平均的值,這樣下來aio的設定不會奇高,增長幅度也差不多在30%左右,但是還是有一定幅度的提升, 對於其它的引數影響也不會有很大的梯度。
之後就是建議客戶計劃進行資料庫例項的重啟使得這些引數變更生效了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1700615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於oracle SCN 的討論Oracle
- 關於程式設計風格的討論 (轉)程式設計
- [技術討論]關於低耦合開發的討論
- 關於網站設計的一點點討論網站
- 關於部落格評論外掛的討論
- 關於神經網路的討論神經網路
- 關於rails和Grails的效能討論AI
- 關於HTTP中文翻譯的討論HTTP
- 關於業務元件相關架構的討論元件架構
- 關於UI的一次討論——來自專案管理群的討論UI專案管理
- 關於分類的線性模型的討論模型
- 關於一個建立型模式的討論:模式
- 關於string.Empty & "" & null 的討論Null
- 關於專案經理的討論 (轉)
- 關於 Angular 應用 Module 的 forRoot 方法的討論Angular
- 關於檔案寫入的原子性討論
- 關於HTTP中文翻譯的討論之二HTTP
- 關於“斯金納箱”及相關理論在遊戲設計中應用的討論遊戲設計
- 討論關於Constraint statesAI
- 《快速排序》引發關於演算法的討論排序演算法
- 關於大資料和資料庫的討論大資料資料庫
- 關於按鍵掃描程式的終極討論
- oracle 關於例項恢復的一個討論Oracle
- 關於拉幕程式的討論和原始碼 (轉)原始碼
- 關於ora_pz程式的一些討論
- 關於資料庫作業系統的討論資料庫作業系統
- 關於locale的設定
- 我的理解——關於“ERP過時論”的探討(轉)
- 討論:關於The REBIND utility and the FLUSH PACKAGE CACHEPackage
- 關於 Service Worker 和 Web 應用對應關係的討論Web
- [提問交流]關於onethink模型這塊的討論模型
- 關於BSS資料化轉型的幾點討論
- 一個關於月球車的筆試題--求討論筆試
- 關於 appium 獲取不到 toast 訊息的討論APPAST
- 關於如何節約資料庫連線的討論?資料庫
- 關於軟體事務記憶體(STM)的討論記憶體
- 討論個有關模組化設計的問題
- 關於PHP中的警告資訊和session的一些討論PHPSession