IT技术博客大学习 共学习 共进步

kswapd 进程占用过多资源导致RAC宕机

Oracle Life 2010-12-16 21:40:27 浏览 3,443 次
    最近在上海一个客户现场,帮助诊断一个RAC宕机问题,最终发现是kswapd进程占用了大量的CPU资源。

    在Top采样输出中,最高的两个就是kswapd0,kswapd1两个进程,分别占用307.9%,299%的CPU资源:

     PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           

    1415 root      20  -5     0    0    0 R 307.9  0.0 121:58.00 [kswapd1]        

    1414 root      20  -5     0    0    0 R 299.0  0.0  90:33.22 [kswapd0]

    2713 root      20  -5     0    0    0 R 112.5  0.0  23:29.55 [kjournald]      

    8342 root      10  -5     0    0    0 S 21.3  0.0   4:08.28 [kjournald]

    29428 root      15   0     0    0    0 S 11.0  0.0  10:59.91 [pdflush]       

    最终资源耗尽,导致一个节点将另外一个节点驱逐。

    记录一下在网上找到的kswapd进程的解释:

    1.Linux uses kswapd for virtual memory management such that pages that have been recently accessed are kept in memory and less active pages are paged out to disk.

    2.系统每过一定时间就会唤醒kswapd进程,查看内存资源是否紧张,如果不紧张,则继续睡眠,在kswapd中,有2个阀值,pages_hige和pages_low,当空闲内存页的数量低于pages_low的时候,kswapd进程就会扫描内存并且每次释放出 32个free pages,直到free page的数量到达pages_high.

    kswapd进程导致系统故障的案例为数不少,有些是Bug导致的,以下Bug是Redhat网站登记的重要参考:

    https://bugzilla.redhat.com/show_bug.cgi?id=293641

    这个客户的环境可以通过系统优化来解决。

建议继续学习

  1. 从谷歌宕机事件认识互联网工作原理 (阅读 8,641)
  2. ORACEL RAC 字符集 (阅读 5,361)
  3. Grid Control监控-进程累积导致的宕机 (阅读 3,760)
  4. Oracle RAC中的RDS内部互联 (阅读 3,721)
  5. Oracle RAC廉价数据仓库解决方案 (阅读 3,720)
  6. RAC的负载均衡 (阅读 3,640)
  7. 【分布式系统工程实现】如何检测一台机器是否宕机? (阅读 3,580)
  8. RAC环境下Memory System Deconfigured (阅读 3,381)
  9. oracle RAC DRM基本概念 (阅读 2,881)