Redis内存问题的学习之一
Redis内存问题的学习之一
背景
前几天帮同事看redis的问题
发现info memory 显示 60GB
但是实际上 save出来的dump文件只有 800M
然后导入到其他的redis之后, info memory只有 2G左右的内存.
所以感觉比较奇怪. 认为 redis 的info memory 在某些特殊情况下可能存在误判.
所以想研究一下内存部分的使用.
第二天晚上发现PG的一个公众号正好讲解了 pmap -d 感觉正好对胃口 就一起学习和使用一下.
这里参考他的部分内容, 地址为:
https://mp.weixin.qq.com/s/W8hy31GWFZ_5qCAFnvTyag
第一部分内存的分类
搞清 PSS/USS/RSS/VSS 这类指标的差异:
VSS (reported as VSZ from ps) is the total accessible address space of a process.
This size also includes memory that may not be resident in RAM like mallocs
that have been allocated but not written to or mmap()ed files on disk, etc
RSS is the total memory actually held in RAM for a process.
RSS can be misleading, because it reports the total all of the shared libraries that the process uses,
even though a shared library is only loaded into memory once regardless of how many processes use it. It also counts all other shared pages,
such as the copy-onwrite pages still shared with the parent after fork(), an important usecase for current LHC multicore usage.
PSS differs from RSS in that it reports the proportional size of its shared pages
USS is the total private memory for a proces, i.e. that memory that is completely unique to that process.
关于pmap的理解
pmap -h
Usage:
pmap [options] PID [PID ...]
Options:
-x, --extended show details
-X show even more details
WARNING: format changes according to /proc/PID/smaps
-XX show everything the kernel provides
-c, --read-rc read the default rc
-C, --read-rc-from=<file> read the rc from file
-n, --create-rc create new default rc
-N, --create-rc-to=<file> create new rc to file
NOTE: pid arguments are not allowed with -n, -N
-d, --device show the device format
-q, --quiet do not display header and footer
-p, --show-path show path in the mapping
-A, --range=<low>[,<high>] limit results to the given range
-h, --help display this help and exit
-V, --version output version information and exit
关于pmap -d
-d, --device show the device format
可以查看类型. 我这边开一个redis ,里面加载了60万个key 进行显示:
127.0.0.1:26379> dbsize
(integer) 648463
127.0.0.1:26379> info memory
# Memory
used_memory:2175437480
used_memory_human:2.03G
used_memory_rss:2255552512
used_memory_rss_human:2.10G
看到内存显示其实是 2.03G左右
pmap -d 636234
mapped: 3643584K writeable/private: 3424448K shared: 0K
然后使用 top -Hp 636234
top - 08:24:45 up 345 days, 17:50, 9 users, load average: 0.59, 1.03, 1.54
Threads: 5 total, 0 running, 5 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1045898.+total, 464319.4 free, 287949.9 used, 293629.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 460899.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
636234 root 20 0 3643584 2.1g 3456 S 0.0 0.2 6:52.71 redis-server
636236 root 20 0 3643584 2.1g 3456 S 0.0 0.2 0:00.00 bio_close_file
636237 root 20 0 3643584 2.1g 3456 S 0.0 0.2 0:00.00 bio_aof_fsync
636238 root 20 0 3643584 2.1g 3456 S 0.0 0.2 0:00.00 bio_lazy_free
636239 root 20 0 3643584 2.1g 3456 S 0.0 0.2 0:00.01 jemalloc_bg_thd
发现 mapped 的内存与 VIRT的数值是可以完全对应的
但是RES与 writeable/private 的内存却不能对应.
这一块有点奇怪, 感觉需要后续继续排查一下.
关于内存的进一步了解
之前总结了 java内存的使用情况, 其实算是宏观层次的理解, 并不微观
也总结过 pcacher工具. 可以看到 buffer和cache相关的内容.
之前对性能其实有误解.
CPU是很快的. 但是内存比CPU慢了两个数量级.
比如一个 8通道 DDR4 4000 的2路20核心 合计 四核心的2.5Ghz的服务器来说.
内存的延迟一般是 60ns左右. CPU的一般是 0.4nm, 实际上那个是差了 150倍
关于贷款. 理论上 40核心 2.5Ghz的带宽 不算MIMD 单指令也至少哟 100Ghz*64/8 也就是至少 800GB/S的能力.
其实实质上因为MIMD的原因, 还会更高.
内存来说 8*4*8 256G的贷款到顶. 而且还需要不停的充放电,
带宽层面CPU至少也是内存的三倍以上. 甚至更高.
所以内存相比CPU是很慢的, 尤其是申请和释放大量的内存, 如果夸numa节点访存,性能其实更差.
Redis内存使用情况
其实键值对 需要设置过期时间
并且增加内存的淘汰策略
并且设置最大使用内存才是redis使用的基本套路.
如果不设置最大内存, 可能会有比较严重的风险, 导致宕机
如果不设置过期的策略, 可能对过期键值对的处理存在风险.
redis还是必须要监控起来. 不建议使用内存大于一半的内存数量.
另外强烈建议redis使用高主频的服务器. 核心数可以不多, 但是主频一定要高.
Redis内存问题的学习之一的更多相关文章
- 深入学习Redis(1):Redis内存模型
前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分. 我们使用Redis时,会接触Redis的5种对象类型(字符串 ...
- 深入学习Redis:Redis内存模型
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 一.Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计 ...
- Redis深入学习笔记(六)Redis内存分配
Redis的高效可以说是轻量级的epoll模型和基于内存的读写共同组成的,关于epoll对于以前的select或者poll的性能优势这里不做介绍,本篇主要介绍领一个重点,Redis的内存分配原理. 获 ...
- 【转】深入学习Redis(1):Redis内存模型
原文:https://www.cnblogs.com/kismetv/p/8654978.html 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Red ...
- redis六种内存淘汰策略学习
当客户端会发起需要更多内存的申请,Redis检查内存使用情况,如果实际使用内存已经超出maxmemory,Redis就会根据用户配置的淘汰策略选出无用的key; 当前Redis3.0版本支持的淘汰策略 ...
- 【深入学习Redis】Redis内存模型
前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分. 我们使用Redis时,会接触Redis的5种对象类型(字符串 ...
- 降低Redis内存占用
1.降低redis内存占用的优点 1.有助于减少创建快照和加载快照所用的时间 2.提升载入AOF文件和重写AOF文件时的效率 3.缩短从服务器进行同步所需的时间 4.无需添加额外的硬件就可以让redi ...
- 美团在Redis上踩过的一些坑-3.redis内存占用飙升(转载)
一.现象: redis-cluster某个分片内存飙升,明显比其他分片高很多,而且持续增长.并且主从的内存使用量并不一致. 二.分析可能原因: 1. redis-cluster的bu ...
- [转帖]美团在Redis上踩过的一些坑-3.redis内存占用飙升
美团在Redis上踩过的一些坑-3.redis内存占用飙升 博客分类: 运维 redis redismonitor内存突增client listinfo 转载请注明出处哈:http://car ...
- Redis内存——内存消耗(内存都去哪了?)
最新:Redis内存--三个重要的缓冲区 最新:Redis内存--内存消耗(内存都去哪了?) 最新:Redis持久化--如何选择合适的持久化方式 最新:Redis持久化--AOF日志 更多文章... ...
随机推荐
- Windows Server 2012 R2在桌面上显示我的电脑等图标
从Windows 2012 开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令.方法如下: 按下「Win鍵」+「R」,在运行里输入: rundll32.exe shell3 ...
- 在 Walrus 上轻松集成 OpenTofu
OpenTofu 是什么? OpenTofu 是一个开源的基础设施即代码(IaC)框架,被提出作为 Terraform 的替代方案,并由 Linux 基金会管理.OpenTofu 的问世为应对 Has ...
- JavaFx之SceneBuilder添加其他依赖库(十六)
JavaFx之SceneBuilder添加其他依赖库(十六) Could not open 'xxxxx.jar' Open operation has failed. Make sure that ...
- GitHub OAuth2的授权指南
一.OAuth2简介 OAuth 2.0(开放授权 2.0)是一种用于授权的开放标准,旨在允许用户在不提供他们的用户名和密码的情况下,授权第三方应用访问其在另一网站上的信息.它是在网络服务之间安全地共 ...
- 文心一言 VS 讯飞星火 VS chatgpt (40)-- 算法导论5.4 4题
四.一次聚会需要邀请多少人,才能让其中 3 人的生日很可能相同? 文心一言: 为了解决这个问题,我们需要先计算出所有可能的生日组合数,然后计算出其中生日相同的组合数. 已知需要邀请的人数为:23人 根 ...
- 浅学GoF23种设计模式
long long ago 买了设计模式的书,一直没看,平常工作虽然涉及到,但是不够系统,工作之余抽空学习一下. 一.创建型模式 01.单例(Singleton) 02.工厂方法(Factory Me ...
- 云小课|MRS基础操作之集群健康检查
本文分享自华为云社区<云小课|MRS基础操作之集群健康检查>,作者:阅识风云. 阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视 ...
- GaussDB(for Redis)揭秘:Redis存算分离架构最全解析
前言: 本文根据华为云NoSQL数据库架构师余汶龙,在今年的中国系统架构师大会SACC上的演讲整理而成,内容如下. 本次分享的大纲分成如下四个部分: 什么是GaussDB(for Redis)? 为什 ...
- 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用
摘要:在文档图像中提取关键信息在自动化办公应用中至关重要.传统基于模板匹配或者规则的方法,在通用性方面.未见过版式模板数据方面,效果都不好:为此,本文提出了一种端到端的空间多模态图推理模型(SDMG- ...
- OGC标准WMTS服务概念与地图商的瓦片编号流派-web地图切片加载
还不知道地图栅格化切片等相关GIS原理的,推荐阅读<webGIS底图栅格化与实时数据合成处理原理,地图API设计,xyz加载> OGC概念 OGC全称--开放地理空间信息联盟(Open G ...