深入Redis--Redis运维之swap空间

swap空间对于操作系统来说比较重要,当我们使用操作系统的时候,如果系统内存不足,常常会将一部分内存数据页进行swap操作,以解决临时的内存困境。swap空间由磁盘提供,对于高并发场景下,swap空间的使用会严重降低系统性能,因为它引入了磁盘IO操作。

在Linux中,提供了free命令来查询操作系统的内存使用情况,free 命令的结果中也包含了swap相关的情况,例如下面的结果中:
  1. [root@BSR ~]# free -ht
  2.               total        used        free      shared  buff/cache   available
  3. Mem:           1.8G        1.3G         72M        692K        433M        283M
  4. Swap:            0B          0B          0B
  5. Total:         1.8G        1.3G         72M
复制代码


我们可以看到swap的值都是0,说明当前的内存是没有配置swap空间的,目前的操作系统的内存是足够的,通常情况下swap一行的used列应该是0B比较好,它证明你的操作系统内存充足,没有发生swap空间的交换操作。

实时查看swap的使用
Linux中还为我们封装了vmstat这个命令来查看系统的相关性能指标,其中也包含swap空间,其中和swap有关的指标是si和so,分别代表swap in和swap out,我们看看vmstat的执行结果:

  1. [root@BSR ~]# vmstat
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
  3. r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
  4. 4  0      0  73712  84464 362016    0    0     7    26    7    1  1  1 98  0  0
复制代码


查看执行进程占用swap的情况
在Linux操作系统中,/proc/pid/smaps这个文件记录了当前进程所对应的内存映像信息,这个信息对于查询指定进程的swap使用情况很有帮助。下面以一个Redis实例进行说明:

  1. [root@BSR ~]# ps -ef|grep redis   
  2. root      1711     1  0 Jul20 ?        00:20:15 src/redis-server 127.0.0.1:21243
  3. root      2370     1  0 Jul20 ?        00:20:18 src/redis-server 127.0.0.1:21244
  4. root      2371     1  0 Jul20 ?        00:20:13 src/redis-server 127.0.0.1:21263
  5. root      7815  5781  0 23:39 pts/3    00:00:00 grep --color=auto redis
  6. root     14810     1  0 Jul20 ?        00:20:39 redis-server *:6379
复制代码


我们以14810这个redis进程为例

游客,如果您要查看本帖隐藏内容请回复
标签: 暂无标签
lee

写了 77 篇文章,拥有财富 653,被 13 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2020-12-3 15:00:49
谢谢分享
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈