热门标签 | 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加大一些。


推荐阅读
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
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社区 版权所有