操做系统swap对redis的性能的影响以及解决方案

1、操做系统SWAP

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

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

2、Redis为何会触发swap

触发swap的核心缘由是机器内存不足,对于redis来讲有两个缘由会触发swap:性能

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

3、查看Redis swap状况

查找redis对应的进程id操作系统

src/redis-cli info | grep process_id

进入redis对应的进程目录code

cd /proc/5910

查看swapblog

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

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

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

4、解决Redis swap

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

集群部署的redis能够经过增长实例个数,减小每一个实例所须要的内存。class

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

相关文章
相关标签/搜索