【优化】--Memcache优化汇总

Memcached缓存机制 用好Cache,优化应用 memcached监控 博文链接:https://sosuny.iteye.com/blog/420110 立即下载

###############################################################################

优化针对实际业务,并不针对硬件环境或者简单的配置文件!

优化的目标是增强性能、增强安全性、增强鲁棒性、充分利用硬件资源、降低成本。

优化的目的是在提高业务处理能力的基础上充分发挥硬件的性能,两者相辅相成。

优化的意义在于节省运营成本。

优化成功与否的关键是运营成本是否得到降低。

###############################################################################

工作原理

基本概念:slab,page,chunk。

Slab

是一个逻辑概念。它是在启动memcached实例的时候预处理好的,每个slab对应一个chunk size,也就是说不同slab有不同的chunk size。具体分配多少个slab由参数 -f (增长因子)和 -n (chunk最小尺寸)决定的。

Page

可以理解为内存页。大小固定为1m。slab会在存储请求时向系统申请page,并将page按chunk size进行切割。

Chunk

是保存用户数据的最小单位。用户数据item(包括key,value)最终会保存到chunk内。chunk规格是固定的,如果用户数据放进来后还有剩余则这剩余部分不能做其他用途。

 

工作流程

memcahed实例启动,根据 -f 和 -n 进行预分配slab。以 -n 为最小值开始,以 -f 为比值生成等比数列,直到1m为止(每个slab的chunk size都要按8的倍数进行补全,比如:如果按比值算是556的话,会再加4到560成为8的整倍数)。然后每个slab分配一个page。当用户发来存储请求时(key,value),memcached会计算key+value的大小,看看属于哪个slab。确定slab后看里面的是否有空闲 chunk放key+value,如果不够就再向系统申请一个page(如果此时已经达到 -m 参数设置的内存使用上限,则看是否设置了 -M 。如果设置了 -M 则返回错误提示,否则按LRU算法删除数据)。申请后将该page按本slab的chunk size 进行切割,然后分配一个来存放用户数据。

 

注意:

    1,chunk是在page里面划分的,而page固定为1m,所以chunk最大不能超过1m。

    2,chunk实际占用内存要加48B,因为chunk数据结构本身需要占用48B。

    3,如果用户数据大于1m,则memcached会将其切割,放到多个chunk内。

    4,已分配出去的page不能回收。

 

优化建议

1,-n 参数的设置,注意将此参数设置为1024可以整除的数(还要考虑48B的差值),否则余下来的部分就浪费了。

2,不要存储超过1m的数据。因为要拆成多个chunk,计算和时间成本都成倍增加。

3,善用stats命令查看memcached状态。

4,消灭eviction(被删除的数据)。造成eviction是因为内存不够,有三个思路:一是在CPU有余力的情况下开启压缩(PHP扩展);二是增加内存;三是调整 -f 参数,减少内存浪费。

5,调整业务代码,提高命中率。

6,缓存小数据。省带宽,省网络I/O时间,省内存。

7,根据业务特点,为数据尺寸区间小的业务分配专用的memcached实例。这样可以调小 -f 参数,使数据集中存在少数几个slab上,内存浪费较少。

启动参数说明

-m 指定缓存所使用的最大内存容量,单位是Megabytes,默认是64MB

-u 只有以root身份运行时才指定该参数

-d 以daemon的形式运行

-l 指定监听的地址

-p 指定监听的TCP端口号,默认是11211

-t 指定线程数,默认是4个

-h 打印帮助信息

-c 最大同时连接数,默认是1024.

-U 指定监听的UDP端口号,默认是11211

-M 内存耗尽时显示错误,而不是删除项

 

一开始说的“-d”参数需要进行进一步的解释

-d install 安装memcached

-d uninstall 卸载memcached

-d start 启动memcached服务

-d restart 重启memcached服务

-d stop 停止memcached服务

-d shutdown 停止memcached服务


参考列表




flowable表中文注释-表结构-主要表结构字段注释-sql脚本 flowable表结构中文注释,主要表结构字段注释,sql执行脚本,包含MySQL版和Oracle版sql脚本。 阅读详情

相关推荐

FreeSWITCH彩铃与回铃音区别详解:从183/180信令到mod_da2检测模块

本文深入解析FreeSWITCH中彩铃与回铃音的技术差异,从183/180信令机制到mod_da2智能检测模块的实现原理。通过对比SIP协议中的早期媒体传输、回铃音补偿技术及实战案例,帮助开发者掌握VoIP系统中的关键音频处理技术,提升呼叫系统稳定性和用户体验。

tree8的博客 349

memcached使用与优化

1、客户端在与 memcached 服务建立连接之后,进行存取对象的操作,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。 2、当存入cached的数据超...

houyongjun的专栏 511

Argoverse2数据集保姆级导入教程:从下载到预处理全流程解析

本文详细解析了Argoverse2数据集的完整导入流程,从环境配置、数据下载到预处理和高效加载策略。作为自动驾驶领域的标杆数据集,Argoverse2提供多模态传感器数据和高精地图信息,帮助研究者快速搭建数据处理流水线。文章包含实用代码示例和性能优化技巧,特别适合自动驾驶算法开发者参考。

weixin_29035405的博客 336

Memcache 优化建议

memcahed实例启动,根据 -f 和 -n 进行预分配slab。以 -n 为最小值开始,以 -f 为比值生成等比数列,直到1m为止(每个slab的chunk size都要按8的倍数进行补全,比如:如果按比值算是556的话,会再加4到560成为8的整倍数)。然后每个slab分配一个page。当用户发来存储请求时(key,value),memcached会计算key+value的大小,看看属于哪个slab。确定slab后看里面的是否有空闲chunk放key+value,如果不够就再向系统申请一个page(如

任何技能都是从模仿开始,逐步升华。 5315

告别OLE!Delphi操作Excel的3种轻量级方案横向评测(FlexCel/XLSReadWriteII/LibXL)

本文深入评测了Delphi操作Excel的三种轻量级方案:FlexCel、XLSReadWriteII和LibXL。通过技术架构、API设计、性能测试和实战案例的全面对比,帮助开发者选择最适合的工具,提升Excel文件处理效率,告别传统OLE方案的依赖和性能问题。

onion的博客 929

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 346

Memcached性能优化与高级技巧

通过本章的学习,我们深入了解了Memcached的性能优化方法和一些高级技巧。通过合理设置内存分配、优化网络配置、调整缓存策略以及使用一致性哈希和分布式锁等高级技巧,可以显著提升Memcached的性能和可用性。同时,通过持续监控和调优Memcached的性能指标,可以及时发现和解决性能瓶颈,确保系统的稳定运行。希望通过本章的指导,你能够在实际项目中充分利用Memcached的优势,实现更高效的数据处理和存储。

weixin_52938153的博客 1237

5分钟搞定kkFileView 4.4.0 Docker部署:小白也能上手的完整配置流程

本文提供了一份针对kkFileView 4.4.0版本的Docker部署完整指南。通过使用预构建的Docker镜像,即使是新手也能在5分钟内完成文件预览服务的搭建,涵盖从环境准备、镜像拉取、容器启动到服务验证的全流程,并分享了进阶配置与生产环境优化建议。

mango的博客 526

Memcache全攻略:解锁高性能缓存的奥秘与实战技巧

Memcache全攻略:解锁高性能缓存的奥秘与实战技巧!

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 1751

日志异常检测详细整理,看这一篇就够了(附各项目代码链接)

对于不用的日志键,用它们的参数值向量训练一个参数值异常检测模型来检测有这些参数值反映的系统性能异常。与标准的GAN框架一样,D和G的参数是基于D的输出来更新的,因此鉴别器D可以被训练为尽可能敏感地将正确的标签分配给真实和虚假序列,而生成器将被训练为尽可能聪明地在经过足够多轮的迭代后欺骗鉴别器,即误导D将真实标签分配给虚假序列。LR:逻辑回归是有监督的模型,将处理后的特征矩阵以及标记作为模型的输入,得到训练后的模型,用此模型预测新出现的特征向量,以此判断特征向量是否为异常的,进而判断日志异常。

qq_20368489的博客 1万+

【Matlab】如何使用Simulink进行电池建模和SOC预估

“通过Simulink电池建模进行SOC预估,其实挺容易!” 1 声明 本文只描述一般性电池建模方法,文中出现的电池相关数据来自一些论文或者外文文献,对数据的真实性不做任何保证。 本文参考了不少国内高校的硕士论文和外文文献,所以本篇文章只作为学术性交流,未经...

wanff1204的博客 2万+

memcache(四)memcache调优

memcache缓存机制,删除机制,提高缓存利用率

鑫仔 1283

25 - GRACE Mascon数据缺失月份数据插值

本篇基于文章的相关内容和文章公开的奇异谱分析(SSA)插值算法程序包,对grace Mascon数据种缺失的月份进行 插值 ,总结了使用程序包的相关过程,可以将该程序应用到其他数据处理插值计算中。

weixin_43339605的博客 1843

PHP:2019年你面试会遇到的题目及解答(汇总)

2019年PHP面试常用题汇总及答案如下: 1.如何防止form表单重复提交? 2.Cookie被禁用了session还可以使用吗? 3.你了解的或者用过的版本控制工具有哪些?简单说明一下。 CVS,SVN, vss, git 4.单例模式的优点,如何实现? 5.单引号和双引号的区别是什么? (1)双引号可以解析变量,单引号不能解析变量 (2)双引号和单引号可以互相嵌套 (3)双引号当中的变量可以...

ZD1901的博客 3420

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Nginx、PHP、Memcache、Tomcat 与 OpenResty 实验汇总

使用echo指令观察变量时,需要在编译阶段加入makeecho $args;echo $host;自定义变量使用setecho $test;图 9:Nginx 变量实验截图图 10:Nginx 自定义变量实验截图server {listen 80;echo "页面暂时无法访问" > /usr/local/nginx/errorpage/errormessage图 14:错误日志和自定义错误界面实验截图。

weixin_55115133的博客 212

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MySQL 讨厌哪种类型的查询

MySQL 查询

记录创业路上的一些想法 1973

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PHP初中高级1000道面试题大全(持续更新中)

PHP初中高级1000道面试题大全(持续更新中)排好序的快速查找的数据结构面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。构造函数(方法)是对象创建完成后第一个被对象自动调用的方法。它存在于每个声明的类中,是一个特殊的成员方法。作用是执行一些初始化的任务。Php中使用__construct()声明构造方法,并且只能声明一个。析构函数(方法)作用和构造方法正好相反,是对象被销毁之前最后一个被对象自动调用的方法。

php-yyds 1277

名博收藏

1.狂放不羁:http://yuquan-nana.iteye.com/blog/551835 里面有不少好文章。   及至2010-03-06访问次数达160251。 2.李大歌:http://blog.youkuaiyun.com/ecitnet/category/340051.aspx 2010-03-08访问次数达202213 3.xmatthew 孤独键盘手:http://www.blo...

longxzq的专栏 164

MemCache详解

MemCache是什么MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。Me...

客人 205

learn资料

老陈的优快云博客: http://blog.youkuaiyun.com/qq_35587839 1.memcache 和 memcached的区别:http://www.phpweblog.net/fuyongjie/articles/7760.html 2.memcached+magent实现memcached集群;http://www.cnblogs.com/happyday56/p/3461113....

weixin_34419321的博客 477

面试总结

工作7年了,基本上一年半换一份工作。说一下面试的时候都问些什么 Mysql mysql 常见面试题 https://www.cnblogs.com/frankielf0921/p/5930743.html mysql 的基本用法 having UNIONDISTINCTfind_in_set FROM_UNIXTIME Innodb 和 MyIsam 的区别 https:...

weixin_30807779的博客 151

MemCache对PHP和Nginx的缓存加速优化

一、MemCache [1]. 简介 memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负担。 memcache通过在内存里维护一个统一的巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。 memcache是一种内存缓存技术,是一种缓存手段,要看情况来使用。 对于频繁读取,每次读取重复率高,数据更新频度低的数据,用memcach...

qq_1789189099的博客 1117

MemCache

1.memcache介绍 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的的许多难题,而所

weixin_62615875的博客 620

MemCache对PHP动态页面的缓存加速优化

lnmp架构部署请查看我前面的博文:https://blog.youkuaiyun.com/weixin_43287982/article/details/87806322 一、MemCache

运维派 639

MemCache对PHP页面的缓存加速优化

一、MemCache 简介 Memcache 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCach...

weixin_42566251的博客 279

面试常问题汇总、redis 、 mangodb 、 memcache对比

redis 、 mangodb 、 memcache 都是NoSQLs数据库:非关系型数据库。mysql就是关系型数据库。 redis mongodb memcache 数据类型 五大类型 string、list、hash、sorted set 、set key-value 值可以是文档,数组及文档数组 key-value 线程 单核单线程 多线程 多核多线程 主要存储..

dandanforgetlove的专栏 2117
上一篇: 【优化】--Mysql优化汇总
下一篇: 【优化】--Tomcat优化汇总
D_Chasel
博客等级 码龄15年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值