这是我在Stackoverflow上的第一篇文章,所以请保持温和。基本上在我们的实时数据库服务器上,我看到使用了过多的物理内存。即使在升级内存后
我们最近在我们的实时数据库服务器上出现了内存不足问题,影响了数据库的运行,实时服务器有8GB的物理内存。事后看来,8GB太低了,所以我们直接升级到16GB,据报道所有16GB用于顶级和免费-m。然后我们再次升级内存,再次使用top和free -m
中报告的所有内存top,free -m和dstat -m上的当前输出显示:
任务:总共608,正在运行,602睡眠,0停止,4僵尸 Cpu(s):18.1%us,1.5%sy,0.0%ni,78.9%id,1.4%wa,0.0%hi,0.1%si,0.0%st 内存:32872264k总计,32449036k使用,423228k免费,172064k缓冲区 交换:总计6291444k,使用1284776k,免费5006668k,缓存25308944k
PID用户PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND 42754 mislve 20 0 12.8g 542m 535m R 93.8 1.7 4:37.94 oracle 43278 mislve 20 0 12.8g 1.3g 1.3g S 7.8 4.0 0:28.44 oracle 23227 mislve 20 0 12.8g 159m 155m S 3.9 0.5 0:06.54 oracle 5120 mislve -2 0 12.8g 14m 14m S 2.0 0.0 46:55.13 oracle 5130 mislve 20 0 12.9g 96m 84m S 2.0 0.3 27:25.16 oracle 5136 mislve 20 0 12.9g 239m 238m S 2.0 0.7 6:32.02 oracle 10428 mislve 20 0 12.8g 1.4g 1.4g S 2.0 4.6 0:36.53 oracle
lln1p-band01:mislve $ free -m 缓存的总使用的免费共享缓冲区 记忆:32101 31860 241 10222 167 24874 - / + buffers / cache:6819 25282 交换:6143 1254 4889
lln1p-band01:mislve $ dstat -m - - - 内存使用情况 - - - 使用buff cach免费 6825M 167M 24.3G 233M 6825M 167M 24.3G 232M 6825M 167M 24.3G 232M 6825M 167M 24.3G 232M 6826M 167M 24.3G 231M ^ C
数据库sga的大小目前为13.463GB
SQL>秀sga
系统全局总面积1.3463E + 10个字节 固定大小2281432字节 可变大小6912213032字节 数据库缓冲区6308233216字节 重做缓冲区240676864字节
正确或错误地我将数据库配置为使用自动内存管理(AMM)作为我们想要查看的临时措施,如果我们试图对Oracle数据库使用的内存进行响铃,它是否会停止过度使用RAM。所以我将memory_max_target设置为16GB,将memory_max_target设置为14GB。我知道这些值过多,我可能不应该在实时OLTP系统上使用AMM,因此我将禁用它并相应地调整SGA和PGA的大小。
SQL>显示参数目标
NAME TYPE VALUE
archive_lag_target整数0 db_flashback_retention_target整数1440 fast_start_io_target整数0 fast_start_mttr_target整数300 memory_max_target大整数16G memory_target大整数14G parallel_servers_target整数64 pga_aggregate_target大整数1500000000 sga_target大整数0
但是即使有14GB的环栅栏,我们也看到几乎所有的RAMn都在使用。我怀疑内存正在操作系统文件缓存中使用。另一个理论是,由于数据库服务器泄漏,Oracle会话内存未被释放回操作系统。
我确实跑了:同步; echo 3> / proc / sys / vm / drop_caches尝试清除页面缓存,但对内存使用有任何影响
以下是服务器的详细内存:
lln1p-band01:mislve $ cat / proc / meminfo MemTotal:32872264 kB MemFree:423780 kB 缓冲区:185776 kB 缓存:25300460 kB SwapCached:48340 kB 活跃:18999184 kB 不活跃:9041360 kB Active(anon):11505660 kB 不活跃(匿名):1514952 kB 活动(文件):7493524 kB 不活动(文件):7526408 kB 不可挽回的:0 kB Mlocked:0 kB SwapTotal:6291444 kB SwapFree:5002792 kB 脏:72 kB 回写:0 kB AnonPages:2509516 kB 映射:9673360 kB Shmem:10466304 kB 平板:605716 kB SReclaimable:394984 kB SUnreclaim:210732 kB KernelStack:12736 kB PageTables:3517352 kB NFS_Unstable:0 kB 弹跳:0 kB WritebackTmp:0 kB CommitLimit:22727576 kB Committed_AS:17502452 kB VmallocTotal:34359738367 kB VmallocUsed:218536 kB VmallocChunk:34359505336 kB 硬件损坏:0 kB AnonHugePages:1079296 kB HugePages_Total:0 HugePages_Free:0 HugePages_Rsvd:0 HugePages_Surp:0 Hugepagesize:2048 kB DirectMap4k:8192 kB DirectMap2M:2088960 kB DirectMap1G:31457280 kB
我们的RedHat操作系统上的版本是:2.6.32-696.3.2.el6.x86_64 我们的Oracle数据库版本是:Oracle Database 11g企业版11.2.0.4.0版 - 64位生产
是否有人经历过类似的事情,或者知道什么可能导致高内存使用率以及如何解决问题。
非常感谢任何帮助或建议。