zoukankan      html  css  js  c++  java
  • 操作系统swap对redis的性能的影响以及解决方案

    一、操作系统SWAP

    swap是操作系统的行为,是指当内存不足时,操作系统将内存的数据拿出一部分放入磁盘,数据从内存和磁盘换入换出的机制,涉及到磁盘的IO。一旦发生swap,内存对应的进程的性能都会受到影响,因为硬盘的访问速度远远小于内存。

    redis作为内存数据库,如果redis对应的内存发生了swap,那么redis的性能会受到极大的影响。

    二、Redis为什么会触发swap

    触发swap的核心原因是机器内存不足,对于redis来说有两个原因会触发swap:

    1. redis自身占用了大量内存,导致机器可用内存不足
    2. redis所在机器其他进程占用内存,导致内存不足。

    三、查看Redis swap情况

    查找redis对应的进程id

    src/redis-cli info | grep process_id
    

    进入redis对应的进程目录

     cd /proc/5910
    

    查看swap

    cat smaps | egrep '^(Swap|Size)'
    

    上图中size代表redis实例占用的一块内存空间,都有一个对应的Swap,swap的大小代表该内存空间区域有多少已经被换到硬盘了,如果size和swap相等,则代表已经全部被换到了内存空间。

    如果出现几百MB设置GB级别的swap时,说明redis的内存压力极大,会变慢,这个时候就需要解决这个问题。

    四、解决Redis swap

    最直接的办法就是增大redis实例所在机器的内存

    集群部署的redis可以通过增加实例个数,减少每个实例所需要的内存。

    另外一个办法就是把redis单独部署,不要和其他应用程序一起部署,这也是比较常规的实践,同时也避免了cpu的竞争。

    作者:iBrake
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
    maven安装
    eclipse安装插件
    java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader
    oracle
    myeclipse中文乱码,JSP页面乱码
    ansible 列表变量、字典变量
    python模块
    python函数
    python数据类型2
  • 原文地址:https://www.cnblogs.com/Brake/p/14353335.html
Copyright © 2011-2022 走看看