热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swap耗尽导致的系统故障

有些事情不能多念叨,老白前几天发了两篇关于HUGEPAGE的文章,10月30号,一个朋友

有些事情不能多念叨,老白前几天发了两篇关于HUGEPAGE的文章,10月30号,一个朋友的数据库就出问题了。这是一个刚刚上线的新系统,用户把oracle数据库迁移到了VMWARE的虚拟机上,刚刚上线第一天就出现了问题。
当时观察到的现象是SWAP都耗尽了,SYS CPU很高,系统几乎Hang死,登录操作系统都无法完成,只能关电处置。从ALERT LOG上看,10点15分左右的时候出现了系统严重换页:

然后系统就经常出现网络连接报错了。为了确认是不是SWAP耗尽,可以检查该时间点的messages日志:

从中可以看出确实free swap = 0kB,SWAP耗尽了。为什么SWAP会耗尽呢?从上面的信息可以看出,当时是没有配置hugepage的:

而这个系统中的会话数是多少呢?从awr报告中可以看出:

这个系统当时的会话数十分高,达到2000多个。这个系统是一台虚拟机,有128G内存,其中

SGA使用了不到60G,按理说内存是应该够用的。因为没有使用HUGEPAGE,导致了大量的内存被PAGETABLE使用,所以导致了内存耗尽。同时这个系统的VM参数swapiness使用了缺省值100,因此CACHE/BUFFER会占用部分内存。因此要优化这个系统的思路还是很清晰的,调整下面的参数,启用HUGEPAGE就可以了。

重启后系统一切恢复正常。通过检查meminfo文件:

/proc/meminfo 

MemTotal:       131758716 kB

MemFree:        24927812 kB

MemAvailable:   52118112 kB

Buffers:           28884 kB

Cached:         28436296 kB

SwapCached:            0 kB

Active:         13958424 kB

Inactive:       18295280 kB

Active(anon):    3848916 kB

Inactive(anon):     4560 kB

Active(file):   10109508 kB

Inactive(file): 18290720 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:       4194300 kB

SwapFree:        4194300 kB

Dirty:               484 kB

Writeback:             0 kB

AnonPages:       3847020 kB

Mapped:           170540 kB

Shmem:              4764 kB

Slab:             415324 kB

SReclaimable:     201516 kB

SUnreclaim:       213808 kB

KernelStack:       26592 kB

PageTables:       375072 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:    33373496 kB

Committed_AS:    8963948 kB

VmallocTotal:   34359738367 kB

VmallocUsed:      384416 kB

VmallocChunk:   34359310332 kB

HardwareCorrupted:     0 kB

AnonHugePages:         0 kB

CmaTotal:          16384 kB

CmaFree:           12664 kB

HugePages_Total:   35840

HugePages_Free:    20943

HugePages_Rsvd:    15824

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:       20288 kB

DirectMap2M:     3125248 kB

DirectMap1G:    133169152 kB

可以看出,HUGEPAGE已经起作用了。此时PAGETABLE也仅仅使用了不到400M,FREE内存也有24G+,可用内存52G+,系统暂时安全了。不过这个系统还存在一个隐患,就是SWAP只配置了4G,还是存在一定的隐患。为了防止类似问题的发生,还是需要把这个系统的SWAP加大一些。


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
author-avatar
_忘却的思念_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有