關於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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於IC設計的一次討論
- 關於網站設計的一點點討論網站
- 關於神經網路的討論神經網路
- 關於分類的線性模型的討論模型
- 關於 Angular 應用 Module 的 forRoot 方法的討論Angular
- 關於“斯金納箱”及相關理論在遊戲設計中應用的討論遊戲設計
- [提問交流]關於onethink模型這塊的討論模型
- 《快速排序》引發關於演算法的討論排序演算法
- 關於 appium 獲取不到 toast 訊息的討論APPAST
- 關於 Service Worker 和 Web 應用對應關係的討論Web
- 一個關於月球車的筆試題--求討論筆試
- 關於下一代安全防護的討論
- 關於BSS資料化轉型的幾點討論
- 討論個有關模組化設計的問題
- 關於 Angular 裡 module 和 Component 包含粒度的一個討論Angular
- 關於 WebRTC API navigator.mediaDevices.getUserMedia 返回型別的討論WebAPIdev型別
- 關於JS更新input元素的value屬性引發的狗血討論JS
- postman關於斷言的設定Postman
- css中關於table的相關設定CSS
- 玩家是否需要“自由”——關於“遊戲策略自由度”的討論遊戲
- 2018.03.05 Android 記一次關於Fragment生命週期的討論。AndroidFragment
- 關於5G被激烈討論的那些爭端和衝突
- 關於雲流化系統-實時雲渲染延時性的討論
- 關於python中slicing的探討Python
- 關於移動端rem的設定REM
- K君關於“IT 新人就業方向問題“討論就業
- 關於動態配置表檢查工具 (討論帖)
- [iOS Monkey 討論帖] 整套新的 fastmonkey 討論iOSAST
- 關於在 Angular 應用裡重複呼叫 RouterModule.forRoot(ROUTES) 的討論Angular
- 關於 SAP UI5 getSAPLogonLanguage is not a function 的錯誤訊息以及 API 版本的討論UIGoFunctionAPI
- HTML頁面關於高分屏的設定HTML
- 關於遊戲中“設定介面”的思考遊戲
- 關於 performSelector 的一些小探討performSelector
- SEO關於探討URL的知識!
- 關於 Roguelike 的探討,及基於 Roguelike 的新框架框架
- [討論]資料庫設計,ER 中的實體關係如何確認?資料庫
- 關於 Angular 應用對瀏覽器 Back 按鈕支援問題的討論Angular瀏覽器
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記
- 討論下 RESTful 風格 API 的路由設計RESTAPI路由