GoldenGate通過CACHEMGR限制記憶體利用
今天客戶一個即將上線的資料庫報告無法連線了,馬上登入上去看,系統大量分頁,77G記憶體的機器,交換分割槽利用率達到70%,還一直在增加
馬上svmon -U看了下,發現ggs使用者用了32GB記憶體,馬上意識到ogg有問題,立馬停掉。記憶體使用一下就降下來了
檢查extract程式日誌,lag延遲了2小時,檢查生成的trail,發現最近2個小時生成的trail極多
嘗試啟動extract,發現主機記憶體馬上就上去了。檢視了長事務,發現還比較多。立馬重新停掉
想到OGG的記憶體限制應該是作業系統使用者記憶體限制
馬上把ggs使用者的記憶體限制設定為1GB,記憶體還是繼續消耗的很快
嘗試了128MB限制,嘗試設定硬限制,還是沒辦法,記憶體吃的飛快。
最後檢視文件,發現通過cachemgr可以設定用來cache沒有提交的資料的虛擬記憶體大小和臨時空間
雖然文件不建議設定,由系統自動管理。但是沒辦法,不設定記憶體吃的太快了
-- 未設定前:
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE: 64G
CACHEPAGEOUTSIZE (normal): 8M
PROCESS VM AVAIL FROM OS (min): 128G
CACHESIZEMAX (strict force to disk): 96G
-- 設定 CACHEMGR CACHESIZE 4GB
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE: 4G
CACHEPAGEOUTSIZE (normal): 8M
PROCESS VM AVAIL FROM OS (min): 8G
CACHESIZEMAX (strict force to disk): 6.91G
CACHESIZE:EXTRACT程式可用的用於快取未提交的事務資料的初始化分配的VM容量。通過CACHESIZE選項指定
CACHEPAGEOUTSIZE:事務資料將被考慮來交換到硬碟的閥值。通過CACHEPAGEOUTSIZE選項控制
PROCESS VM AVAIL FROM OS:程式可以使用的VM的容量的近似值,預設比系統實體記憶體+交換分割槽容量略低,一般為CACHESIZE的兩倍
CACHESIZEMAX:指定進行CACHEPAGEOUTSIZE時的閥值,超過該值進行長事務的PAGEOUT,低於該值停止PAGEOUT
總的來說:
EXTRACT啟動時,會分配CACHESIZE大小的VM來快取事務資料
能夠用來快取事務資料的VM的大小,為PROCESS VM AVAIL FROM OS
當VM使用達到CACHESIZEMAX時,考慮將資料資料大於CACHEPAGEOUTSIZE的事務pageout入磁碟
通過設定CACHEMGR CACHESIZE 可以來控制OGG程式的記憶體使用
通過send extract extxz, CACHEMGR CACHESTATS,可以看當前程式的vm使用量
馬上svmon -U看了下,發現ggs使用者用了32GB記憶體,馬上意識到ogg有問題,立馬停掉。記憶體使用一下就降下來了
檢查extract程式日誌,lag延遲了2小時,檢查生成的trail,發現最近2個小時生成的trail極多
嘗試啟動extract,發現主機記憶體馬上就上去了。檢視了長事務,發現還比較多。立馬重新停掉
想到OGG的記憶體限制應該是作業系統使用者記憶體限制
馬上把ggs使用者的記憶體限制設定為1GB,記憶體還是繼續消耗的很快
嘗試了128MB限制,嘗試設定硬限制,還是沒辦法,記憶體吃的飛快。
最後檢視文件,發現通過cachemgr可以設定用來cache沒有提交的資料的虛擬記憶體大小和臨時空間
雖然文件不建議設定,由系統自動管理。但是沒辦法,不設定記憶體吃的太快了
-- 未設定前:
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE: 64G
CACHEPAGEOUTSIZE (normal): 8M
PROCESS VM AVAIL FROM OS (min): 128G
CACHESIZEMAX (strict force to disk): 96G
-- 設定 CACHEMGR CACHESIZE 4GB
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE: 4G
CACHEPAGEOUTSIZE (normal): 8M
PROCESS VM AVAIL FROM OS (min): 8G
CACHESIZEMAX (strict force to disk): 6.91G
CACHESIZE:EXTRACT程式可用的用於快取未提交的事務資料的初始化分配的VM容量。通過CACHESIZE選項指定
CACHEPAGEOUTSIZE:事務資料將被考慮來交換到硬碟的閥值。通過CACHEPAGEOUTSIZE選項控制
PROCESS VM AVAIL FROM OS:程式可以使用的VM的容量的近似值,預設比系統實體記憶體+交換分割槽容量略低,一般為CACHESIZE的兩倍
CACHESIZEMAX:指定進行CACHEPAGEOUTSIZE時的閥值,超過該值進行長事務的PAGEOUT,低於該值停止PAGEOUT
總的來說:
EXTRACT啟動時,會分配CACHESIZE大小的VM來快取事務資料
能夠用來快取事務資料的VM的大小,為PROCESS VM AVAIL FROM OS
當VM使用達到CACHESIZEMAX時,考慮將資料資料大於CACHEPAGEOUTSIZE的事務pageout入磁碟
通過設定CACHEMGR CACHESIZE 可以來控制OGG程式的記憶體使用
通過send extract extxz, CACHEMGR CACHESTATS,可以看當前程式的vm使用量
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-733599/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Netweaver工作程式的記憶體限制 VS CloudFoundry應用的記憶體限制記憶體Cloud
- Node記憶體限制和垃圾回收記憶體
- Node記憶體限制與垃圾回收記憶體
- aix 共享記憶體段大小限制AI記憶體
- npm打包進行記憶體限制NPM記憶體
- [譯] Swift:通過示例避免記憶體洩漏Swift記憶體
- 通過減少記憶體使用改善.NET效能記憶體
- 解決sqlserver限制2G記憶體限制安裝SQLServer記憶體
- 利用USE_INDIRECT_DATA_BUFFERS突破32位的2G記憶體限制(二)記憶體
- 利用USE_INDIRECT_DATA_BUFFERS突破32位的2G記憶體限制(一)記憶體
- mysql中CPU或記憶體利用率過高問題MySql記憶體
- CentOS限制實體記憶體大小方法CentOS記憶體
- Java記憶體快取-通過Google Guava建立快取Java記憶體快取GoGuava
- [譯] 通過垃圾回收機制理解 JavaScript 記憶體管理JavaScript記憶體
- 快取及使用 Circuit Breaker 限制記憶體使用快取UI記憶體
- windows 32位的 Oracle 記憶體限制問題WindowsOracle記憶體
- CTF記憶體高階利用技術記憶體
- 程式間通訊---共享記憶體記憶體
- 透過proc看記憶體記憶體
- Java記憶體快取-通過Map定製簡單快取Java記憶體快取
- GO語言————6.12 通過記憶體快取來提升效能Go記憶體快取
- Swift Instruments工具的使用,通過leaks分析記憶體洩露Swift記憶體洩露
- 通過記憶體鎖定,解決ORA-4031錯誤記憶體
- 深入理解Kubernetes資源限制:記憶體記憶體
- 通過 HelloWorld 瞭解 Java 程式執行過程以及執行時記憶體Java記憶體
- 全記憶體的redis用習慣了?那能突破記憶體限制類redis產品ssdb呢?記憶體Redis
- Windows 32bit OS上實體記憶體限制以及ORACLE 10G 在32bit OS的SGA記憶體分配限制解決方法Windows記憶體Oracle 10g
- 程式間通訊之共享記憶體記憶體
- 程序間通訊(3)-共享記憶體記憶體
- C++ Vector怎麼樣釋放記憶體,通過swap()函式C++記憶體函式
- 記憶體訪問全過程記憶體
- VB輸入限制的記憶體破解 (2千字)記憶體
- 擺脫限制使有限的記憶體用在刀刃上(轉)記憶體
- 利用Windbg分析高記憶體佔用問題記憶體
- system-v IPC共享記憶體通訊記憶體
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- 記憶體_大頁記憶體記憶體
- Redis的記憶體回收機制和記憶體過期淘汰策略詳解Redis記憶體