某个数据库系统,Swap空间一直利用率很高,不能释放。
交代一下环境:
[oracle@salesdb admin]$ more /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[oracle@salesdb admin]$ sqlplus -v

SQL*Plus: Release 12.1.0.2.0 Production
[oracle@salesdb admin]$ more /etc/sysctl.conf

kernel.shmmax = 395136991232
kernel.shmall = 96468992
kernel.shmmni = 4096
kernel.sem = 5010 641280 5010 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_default=8388608
net.core.wmem_max=16777216
fs.aio-max-nr=1048576
vm.swappiness = 0                           ###############这个参数###########
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.threads-max = 65535
kernel.msgmni = 16384
kernel.msgmnb = 65535
kernel.msgmax = 65535
vm.nr_hugepages = 77572

其中设定了swappiness=0,理解的是为0就是优先使用物理内存,我们看看系统里识别到的到底是多少

调取了系统history,未找到sysctl -p或者reboot步骤,遂决定停库让其参数生效,还有vm.nr_hugepages参数也有oracle提供的脚本进行建议设定;
1,非7.2内核版本可参考;
#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
#
# This script is provided by Doc ID 401749.1 from My Oracle Support
# http://support.oracle.com

# Welcome text
echo "
This script is provided by Doc ID 401749.1 from My Oracle Support
(http://support.oracle.com) where it is intended to compute values for
the recommended HugePages/HugeTLB configuration for the current shared
memory segments. Before proceeding with the execution please make sure
that:
* Oracle Database instance(s) are up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not setup
   (See Doc ID 749851.1)
* The shared memory segments can be listed by command:
     # ipcs -m

Press Enter to proceed..."

read

# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`

# Initialize the counter
NUM_PG=0

# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk '{print $5}' | grep "[0-9][0-9]*"`
do
   MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
   if [ $MIN_PG -gt 0 ]; then
      NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
   fi
done

RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`

# An SGA less than 100MB does not make sense
# Bail out if that is the case
if [ $RES_BYTES -lt 100000000 ]; then
   echo "***********"
   echo "** ERROR **"
   echo "***********"
   echo "Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration. HugePages can only be used for shared memory segments
that you can list by command:

# ipcs -m

of a size that can match an Oracle Database SGA. Please make sure that:
* Oracle Database instance is up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not configured"
   exit 1
fi

# Finish with results
case $KERN in
   '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
          echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
   '2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    *) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac

# End

2,7.2内核版本可参考;

#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
# on Oracle Linux
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
#
# This script is provided by Doc ID 401749.1 from My Oracle Support
# http://support.oracle.com

# Welcome text
echo "
This script is provided by Doc ID 401749.1 from My Oracle Support
(http://support.oracle.com) where it is intended to compute values for
the recommended HugePages/HugeTLB configuration for the current shared
memory segments on Oracle Linux. Before proceeding with the execution please note following:
* For ASM instance, it needs to configure ASMM instead of AMM.
* The 'pga_aggregate_target' is outside the SGA and
   you should accommodate this while calculating SGA size.
* In case you changes the DB SGA size,
   as the new SGA will not fit in the previous HugePages configuration,
   it had better disable the whole HugePages,
   start the DB with new SGA size and run the script again.
And make sure that:
* Oracle Database instance(s) are up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not setup
   (See Doc ID 749851.1)
* The shared memory segments can be listed by command:
     # ipcs -m

Press Enter to proceed..."

read

# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`
if [ -z "$HPG_SZ" ];then
    echo "The hugepages may not be supported in the system where the script is being executed."
    exit 1
fi

# Initialize the counter
NUM_PG=0

# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | cut -c44-300 | awk '{print $1}' | grep "[0-9][0-9]*"`
do
    MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
    if [ $MIN_PG -gt 0 ]; then
        NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
    fi
done

RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`

# An SGA less than 100MB does not make sense
# Bail out if that is the case
if [ $RES_BYTES -lt 100000000 ]; then
    echo "***********"
    echo "** ERROR **"
    echo "***********"
    echo "Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration. HugePages can only be used for shared memory segments
that you can list by command:

# ipcs -m

of a size that can match an Oracle Database SGA. Please make sure that:
* Oracle Database instance is up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not configured"
    exit 1
fi

# Finish with results
case $KERN in
    '2.2') echo "Kernel version $KERN is not supported. Exiting." ;;
    '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
           echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
    '2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '3.8') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '3.10') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '4.1') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
esac

# End

将这两个参数修改后,sysctl -p一直卡着不动,后查看meminfo一直在缓慢增长。

# egrep 'HugePages_Total|HugePages_Free' /proc/meminfo
HugePages_Total:    77572                                     ###########该数值一直在变,递增#######
HugePages_Free:      0

考虑到停机窗口,将sysctl -p操作kill掉,reboot主机参数生效。至此swap空间也一直没有持续增长。

[oracle@salesdb admin]$ free -m
              total        used        free      shared  buff/cache   available
Mem:         515605      174674        1119      101075      339811      239079
Swap:         65535           0       65535

Swap空间利用率不释放相关推荐

  1. Linux Swap空间利用率过高

    在单独部署的mysql数据库服务器中发现,在高并发的情况下发现内存不够用,进一步发现swap的利用率很高.公司的DBA提了两点建议:1.建议先减小数据库缓冲池(buffer pool)的大小:2.进行 ...

  2. Swap:容器可以使用Swap空间吗?

    用过 Linux 的同学应该都很熟悉 Swap 空间了,简单来说它就是就是一块磁盘空间. 当内存写满的时候,就可以把内存中不常用的数据暂时写到这个 Swap 空间上.这样一来,内存空间就可以释放出来, ...

  3. 給服务器增加swap空间缓解内存压力

    前言 如何让服务器响应更快?如何避免应用出现内存不足的错误?最简单的方法就是增加交换空间.Swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西. 这从某种程度上相当于增加了服务 ...

  4. 4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间

    2019独角兽企业重金招聘Python工程师标准>>> 4.5/4.6 磁盘格式化 cat etc/filesystems 系统支持的文件系统格式 查看系统文件格式 mount 格式 ...

  5. centos 释放swap_CentOS下SWAP分区建立及释放内存详解

    方法一: 一.查看系统当前的分区情况: >free -m 二.创建用于交换分区的文件: >dd if=/dev/zero of=/whatever/swap bs=block_size ( ...

  6. zabbix管理:zabbix报错之swap空间不足(创建、优化swap交换分区)

    Lack of free swap space on node1 报错信息:It probably means that the systems requires more physical memo ...

  7. 磁盘格式化、磁盘挂载、手动增加swap空间

    一.磁盘格式化 1.cat /etc/filesystems 查看centuos7支持的文件系统格式 查看分区文件系统 mount swap分区为swap格式,这是swap特有的格式 格式化命令 mk ...

  8. rm 空间不释放_rm删除文件之后,空间就被释放了吗?

    来源:编程珠玑 在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意. 产生一个指定大小的随机内容文件 我们先看一下当前各个挂载目录的空间大小: $ ...

  9. rm 空间不释放_面试官跟我说rm删除文件之后,空间就被释放了吗?我该怎么答...

    在Linux里面,你是不是也曾经天真的认为,只要使用rm去删除一个文件,那么这个文件所占用的空间就释放了?你要是这样认为,那事情就可能不如人意了 产生一个指定大小的随机内容文件 先看一下当前各个挂载目 ...

最新文章

  1. ubuntu-18.04 root登录图形界面失败问题解决方案
  2. 中端存储不能承受之重
  3. Juniper 文章目录
  4. C#仿QQ皮肤-常用用户控件EnterFrom1和窗体EntryForm的实现
  5. 2750个通用停用词表整理,免费下载
  6. Mybatis在Maven项目中使用
  7. 小伯利恒之歌(音乐)-Oh Little Town of Bethlehem(Virtual Tour)一次真实的旅行,看看耶稣的家乡...
  8. Idea格式化mybatis框架mapper文件
  9. 格雷希尔Gripseal燃油管快速接头如何做密封性测试
  10. 什么是广域网(WAN)?
  11. Unity实现隐藏鼠标功能
  12. 泥瓦匠:程序猿为啥要坚持写原创技术博客?
  13. mockjs的安装使用
  14. 【机器学习】算法原理详细推导与实现(七):决策树算法
  15. Win10系统电脑关机时提示“内存不能为read”的解决方法
  16. 达梦7数据库数据守护集群 技术方案
  17. 30多岁转行做python_30 岁转行做Python开发晚吗?而且是零基础
  18. 获取kvm的ip地址的三种方式
  19. 编译linux tq2440,移植linux文件系统遇到的问题 tq2440,linuxtq2440
  20. 利用mysql实现分页

热门文章

  1. Failed to install UTRUST.apk on device 'ZTE_SP920': Too many open files
  2. Android 水波纹点击效果(Ripple Effect)
  3. 数据库性能优化—SQL优化十大原则
  4. Redis -基础命令
  5. kotlin学习笔记——集合及集合操作符
  6. Android 点击应用外的Url拉起应用
  7. EntityFramework进阶(三)- 根据IQueryable获取DbContext
  8. j2ee之原生AJAX
  9. SharePoint Framework 企业向导(九)
  10. 对 Java 集合的巧妙利用