亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

個人筆記:ORACLE大頁內存hugepage和SGA、PGA的經驗,SGA并不是越大越好

發布時間:2020-07-14 13:06:05 來源:網絡 閱讀:4044 作者:zylhsy 欄目:關系型數據庫

背景:ORACLE 11.2,SGA 64G,PGA 8G,壓測出現操作系統內存耗盡
WARNING: Heavy swapping observed on system in last 5 mins.
pct of memory swapped in [1.94%] pct of memory swapped out [1.32%].

分析:
1、連接到數據庫的每個系統連接進程大概會占用10M左右,1000個連接那么也就接近10G了;
2、在32位系統下,一個進程訪問1GB的內存,會產生1M(110241024/44/1024/1024)的頁表,如果是在64位系統,將會增大到2M。
SGA設置為64G,有1000個ORACLE用戶進程(在linux中每個進程頁表獨立,都有自己的頁表),64位LINUX的系統上,最大的頁表占用內存為:64
2*1000/1024=125G;

解決方法:
1、控制SGA大小, sga+pga最好控制在50%物理內存以內,pga內存不要操作sga內存的20%;
2、當主機的物理內存為64G,設SGA>=32G時,建議開啟大頁;
內存都是以頁的形式劃分的,默認情況下每頁是4K,這就意味著如果物理內存很大,則映射表的條目將會非常多,會影響CPU的檢索效率。因為內存大小是固定的,為了減少映射表的條目,可采取的辦法只有增加頁的尺寸。
在Linux中配置hugepage可以提高oracle的性能,減少oracle sga的頁交換,類似于aix中的lagepage。

設置方法(參考第三方材料):
1、關閉Oracle Database 11g中的AMM(Automatic Memory Management),即把兩個參數MEMORY_TARGET / MEMORY_MAX_TARGET設為0
如果alter system set MEMORY_MAX_TARGET=0 scope=spfile;重啟后發現沒有改為0,可以alter system reset memory_max_target; 來設置

2、參考metalink(文檔 ID 401749.1)提供的腳本,計算hugepages的大小

3、對hugepages_settings.sh這個腳本授可執行的權限
chmod +x hugepages_settings.sh

4、執行執行hugepages_settings.sh得到建議值
得出大頁的大小為1028頁(注:一頁為2M,這個值不可改,1028*2M=2056M),實際上hugepages與參數sga_max_size有關,比sga_max_size的值稍微大一點點(比SGA_MAX_SIZE最少要多加一頁,2M的頁不要分配超過sga_max_size太多,會造成內存的浪費)
注意:使用Hugepage內存是共享內存,它會一直keep在內存中的,不會被交換出去,也就是說使用hurgepage的內存不能被其他的進程使用,所以,一定要合理設置這個值,避免造成浪費。對于只使用Oracle的服務器來說,把Hugepage_pool設置成大于SGA大小才能被Oracle使用。
SQL>show parameter sga_max_size
NAME TYPE VALUE


sga_max_size big integer 2G

5、設置hugepages,在內核參數中添加一行,vi /etc/sysctl.conf
vm.nr_hugepages = 1028

6、修改內核參數立即生效
[root@el5 ~]# sysctl -p

7、別忘記設定內存鎖memlock,以K為單位,memlock數量要大于大頁的數量,當然也要大于sga_max_size,這里設定為2056000,設置為-1,表示不限制。
[root@el5 ~]# vi /etc/security/limits.conf
oracle soft memlock 2056000
oracle hard memlock 2056000

8、檢查limits是否正確
[root@el5 ~]# su - oracle
[oracle@el5 ~] ulimit -l
2056000

9、重啟數據庫

10、查看大頁,已被使用
[oracle@el5 ~]$ watch -n1 'cat /proc/meminfo |grep -i HugePage'
HugePages_Total: 總共頁
HugePages_Free: 空閑頁
HugePages_Rsvd: 操作系統承諾給Oracle預留頁
Hugepagesize: 2048 kB 每頁是2M,不可修改

如:
HugePages_Total: 1028 ---總共1028頁
HugePages_Free: 869 ---空閑869 頁,即當前大頁被使用了1028-869=159頁,即被用了1592M=118M,小于sga_target。
HugePages_Rsvd: 842 ---操作系統承諾給Oracle預留842頁,即842
2M=1684M(1684+118==SGA_MAX_SIZE)

使用了hugepage之后,SGA就默認pin在內存里了,那么就不用lock sga了。接下來我們研究一下參數:pre_page_sga,這個參數默認是false,我把它打開。
sys@OCM> alter system set pre_page_sga=true scope=spfile;
sys@OCM> show parameter sga
NAME TYPE VALUE


lock_sga boolean FALSE
pre_page_sga boolean TRUE
sga_max_size big integer 2G
sga_target big integer 1G
HugePages_Total: 1028 ---總共1028頁
HugePages_Free: 548 ---空閑548頁,即當前大頁被使用了1028-548=480頁,即被用了4802M=960M,約等于sga_target,參數pre_page_sga起作用了。
HugePages_Rsvd: 521 ---操作系統承諾給Oracle預留521頁,即521
2M=1042M(理解為sga_max_size-sga_target)
Hugepagesize: 2048 kB --每頁是2M,不可修改

參考metalink:USE_LARGE_PAGES To Enable HugePages (文檔 ID 1392497.1)

補充關于內存申請的OverCommit
Linux下的OverCommit機制,主要是為了應對可能的異常的大量內存申請對OS本身造成沖擊。
Linux有三種OverCommit機制,可以通過:/proc/sys/vm/overcommit_memory來配置,三種配置的具體含義:
0:啟發式策略,后果比較嚴重的Overcommit將不能成功,而輕微的Overcommit將被允許。
1:永遠允許Overcommit,這種策略適合那些不能承受內存分配失敗的應用,比如某些科學計算應用。
2:永遠禁止Overcommit,在這個情況下,系統所能分配的內存不會超過swap+RAM*系數(/proc/sys/vm /overcmmit_ratio,默認50%,你可以調整),如果這么多資源已經用光,那么后面任何嘗試申請內存的行為都會返回錯誤,這通常意味著此時 沒法運行任何新程序。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建水县| 泸州市| 东辽县| 金山区| 沛县| 玛沁县| 定安县| 泽库县| 咸宁市| 屏东县| 含山县| 金沙县| 门头沟区| 滕州市| 叙永县| 左贡县| 宜兰县| 新乐市| 乌拉特前旗| 济源市| 江门市| 余干县| 佳木斯市| 长岛县| 中西区| 和田市| 咸阳市| 万宁市| 泗洪县| 故城县| 广安市| 岳西县| 新源县| 屯昌县| 介休市| 苍溪县| 黄骅市| 茂名市| 宜川县| 额济纳旗| 巫溪县|