暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

运维专家:Oracle过度占用内存问题分析

7989

今天我们来看一例来自重庆原厂专家李捷的分享:HPUX-PA平台上ORACLE数据库主机内存占用过高故障处理

背景:
某客户反映:自ORACLE数据库有9i升级到11gR2,运行一段时间后,数据库主机内存占用居高不下,无论负荷大小,内存占用基本在96%以上,并缓慢增加。目前主机仅用于数据库服务。
数据库主机操作系统为HPUX PA-RISC 11.31,升级后数据库版本为ORACLE rdbms11.2.0.3,安装PSU补丁11.2.0.3.14。数据库以单实例运行,数据存储使用裸设备。




通过操作系统自带的glance工具,分析内存使用情况:

B3692A Glance 11.00.044         10:18:58  server  9000/800    Current  Avg  High
--------------------------------------------------------------------------------
CPU  Util   SU  U                                              |  9%    7%   22%
Disk Util   F F                                                |  6%    8%   55%
Mem  Util   S                       SU                   UFF   | 96%   96%   96%
Swap Util   U                     UR    R                      | 56%   56%   56%
--------------------------------------------------------------------------------
                                 MEMORY REPORT                      Users=    1
Event         Current   Cumulative   Current Rate   Cum Rate   High Rate
--------------------------------------------------------------------------------
Page Faults      1476        55791       335.4      218.1      1446.6
Page In          1183          127       268.8        0.4      1095.1
Page Out            0            0         0.0        0.0         0.0
KB Paged In      40kb        508kb         9.0        1.9       548.4
KB Paged Out      0kb          0kb         0.0        0.0         0.0
Reactivations       0            0         0.0        0.0         0.0
Deactivations       0            0         0.0        0.0         0.0
KB Deactivated    0kb          0kb         0.0        0.0         0.0
VM Reads           10           79         2.2        0.3         4.5
VM Writes           0            0         0.0        0.0         0.0
Total VM :  20.4gb   Sys Mem  :  20.0gb   User Mem:  16.7gb   Phys Mem :  40.0gb
Active VM:   6.2gb   Buf Cache:     7mb   Free Mem:   1.5gb   FileCache:   1.7gb
  0.0    29.1mb   33.2mb SOCKT

内存使用率高达96%,paging频繁发生,内存主要消耗者是oracle进程。目前系统物理内存40G,使用占比如下: User Mem: 16.7G,FileCache: 1.7G,Sys Mem:20G。因该主机仅用于数据库服务,系统内存占到整个物理内存的50%,很异常。

通过AWR报告分析内存使用情况,


Begin

End

Host Mem (MB):

40,933.0

40,933.0

SGA use (MB):

12,288.0

12,288.0

PGA use (MB):

1,501.1

1,771.1

% Host Mem used for SGA+PGA:

33.69

34.35

SGA、PGA占用内存约14G,数据库连接数<500,同glance看到的User Mem: 16.7G相符。

数据存储采用裸设备,操作系统参数filecache_max配置为5%,所以file cache占用不应太高,同glance显示的FileCache: 1.7G相符。

通过操作系统工具kmeminfo查看内存占用细节:

Physical memory usage summary (in page/byte/percent):
 
Physical memory       = 10478848   40.0g 100% 
Free memory           =   456485    1.7g   4% 
User processes        =  4336146   16.5g  41%  details with -user
  Detached SHMEM      =        2    8.0k   0%  details with -shmem
System                =  5686852   21.7g  54% 
  Kernel              =  5216156   19.9g  50%  kernel text and data
    Dynamic Arenas    =  1673425    6.4g  16%  details with -arena
      asyncdsk variab =   521710    2.0g   5% 
      spinlock_arena  =   163617  639.1m   2% 
      misc region are =   141041  550.9m   1% 
      reg_fixed_arena =   140622  549.3m   1% 
      vx_global_kmcac =    90815  354.7m   1% 
      Other arenas    =   615620    2.3g   6%  details with -arena
    Super
    . pool   =  2860767   10.9g  27%  details with -kas
    Emergency pool    =    21093   82.4m   0%  system critical reserve
    UAREA's           =    11568   45.2m   0% 
    Static Tables     =   660164    2.5g   6%  details with -static
      pfdat           =   511662    2.0g   5% 
      htbl2_0         =   131072  512.0m   1% 
      inode           =     7412   29.0m   0% 
      text            =     4932   19.3m   0%  vmunix text section
      bss             =     1992    7.8m   0%  vmunix bss section
      Other tables    =     3092   12.1m   0%  details with -static
  File Cache          =   470696    1.8g   4%  details with -ufc

操心系统kernel占用近50%物理内存,其中Super page pool占用了10.9G,并且一直不释放。

对此问题,同主机厂商进行沟通,反馈ORACLE进程发起的大量ASYNC IO请求,造成super page pool内存碎片,致使大量SYS内存消耗。
     目前数据库采用逻辑卷存储,开启异步I/O模式。Oracle 11g较9i增加了异步I/O并发访问连接数(max_concurrent=5000),HPUX系统super page pool需要为此分配更多内存(以4K单位分配),导致了大量的内存碎片出现。
     就此问题,在HPUX-IA平台上,针对oracle 11.2.0.3版本有patch 1294767可以进行修复;客户平台为HPUX-PA,则需要升级数据库至11.2.0.4解决。如果不能打补丁或升级,可以采取定期重启数据库实例释放资源的临时措施。


专家简介:

    李捷:甲骨文公司资深高级技术专家,15年数据库服务经验。曾服务于中国电信、中国网通、中国移动等大型通信企业。擅长数据库高可用性架构、数据迁移、性能优化、各类数据库疑难问题处理,有非常丰富的实战经验。



文章转载自西区O记重案实录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论