Memcached调优
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》 项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力。但是期间遇到了一些问题,这里记录一些调优细节。? 客户端选择 最开始我使用的是 Memcached Java Client,
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》
项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力。但是期间遇到了一些问题,这里记录一些调优细节。?
客户端选择
- 最开始我使用的是 Memcached Java Client,但是最后放弃了,放弃原因包括:
- 有时会出现的“No Thread For Socket”异常,我记录在 这里;
- 它不支持NOREPLY模式(在这种模式下,更新缓存的set操作可以不需要Memcached服务端响应,这使得set操作非常非常快)。
- 现在我使用的是 XMemcached。
统计信息
可以通过nc命令向Memcached服务端发送消息来获取统计信息,例如:
echo "stats settings" | nc localhost 20200 | sort
但是,我更需要客户端的统计信息,尤其是缓存命中率,set操作成功率等等。所以在客户端添加了一个简单的统计模块。每次处理用户请求的过程中,通常有两次向Cache服务端的提交get请求,很多情况下还有两次set请求,合计消耗17ms,在把set请求改成NOREPLY模式以后,这个数减少到10ms以内。因此,对于实时性要求比较高的情形,请打开这个模式,或者干脆使用异步的set。
服务端参数
- 可以使用-U来使用UDP传输,但是收效不大。
- -k参数可以阻止换页操作发生,在内存足够的情况下对提高性能有益。
- -C参数可以禁用CAS。
- -t指定使用的线程数,如果你是多CPU、多核CPU,可以把这个值配成和总CPU核数一致。
- -f参数,增长因子,存储大对象把它配大一点可以提高效率,配小一点可以减少浪费。
客户端参数
- 在使用Memcached Java Client的时候:
- 由于它会使用direct memory,一定不能加上DisableExplicitGC这个参数,否则就等着OOM吧;
- 配置大一些的heap size可以提高L1 cache的命中率;
- 把alive check置为false。
- 对于实时性和响应性要求比较高的项目,需要做GC调优,主要是GC时延,比如配置MaxGCPauseMillis参数到一个可以接受的值,但是不是越小越好,减低时延的同时会降低吞吐量。
- 有同事提了个建议,在客户端存放一个cache key的集合,可以在去cache server查询之前,先在本地查看一下是否有缓存记录(比如用 Bloom filter来实现),如果有,再去cache server查询。这个集合可以和实际的cache key有出入,也许一个小时同步一次就可以。但是实际上实现起来比较困难,本身key set的总量非常大,而且Memcached最初提供获取key iterator的接口返回的是一个限定大小key set的iterator,缺乏实际意义(这个接口在后来Memcached的版本中已经被废弃)。至于stats方法,它会把所有cache对象dump出来,只能小规模调试的时候使用。
- 关于Nagle算法:Nagle的好处是可以批量处理请求,提高TCP包有效部分的大小,从而提高网络利用率,但是如果对每个请求处理时延要求很高的话请关闭。
- 一定要指定socket timeout或者get/set timeout。
最后,有人做了一个几个Memcached客户端的综合的性能试验: 链接。
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》
分享到:
你可能也喜欢:
-
Issue record: “No thread for socket” about Memcached
-
设计缓存框架需要关注的要素
-
Ehcache详细解读
-
OSCache框架源码解析
-
Javascript Memoizer
原文地址:Memcached调优, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用php-fpm进行高性能调优PHP是一种非常流行的服务器端脚本语言,广泛用于开发网页应用和动态网站。然而,随着访问量的增加,PHP应用程序的性能可能会受到影响。为了解决这个问题,我们可以使用php-fpm(FastCGIProcessManager)来进行高性能调优。本文将介绍如何使用php-fpm来提升PHP应用程序的性能,并提供代码示例。一、

一、今日头条发布文章怎么才能有收益?今日头条发布文章获得更多收益方法!1.开通基础权益:原创文章选择投放广告可获得收益,视频必须要原创横屏才会有收益。2.开通百粉权益:粉丝量达到百粉以上,微头条、原创问答创作及问答均可获得收益。3.坚持原创作品:原创作品包含文章、微头条及问题等,要求300字以上。注意违规抄袭作品作为原创发布,会被扣信用分,即使有收益也会被扣除。4.垂直度:做专业领域一类的文章,不能随意跨领域写文章,会得不到合适的推荐,达不到作品的专和精,难以吸引粉丝读者。5.活跃度:活跃度高,

提升Go语言网站访问速度的调优实践详解摘要:在高速发展的互联网时代,网站访问速度成为用户选择一个网站的重要因素之一。本文将详细介绍如何使用Go语言进行网站的访问速度调优,包括优化网络请求、使用缓存、并发处理等方面的实践经验。文章还将提供代码示例,帮助读者更好地理解和应用这些优化技术。一、优化网络请求在网站开发中,网络请求是不可避免的环节。而优化网络请求,能够

在人工智能领域,大语言模型(LLMs)正日益成为研究和应用的新热点。然而,如何高效、精准地对这些庞然大物进行调优,一直是业界和学术界面临的重要挑战。近期,PyTorch官方博客发布了一篇关于TorchTune的文章,引起了广泛关注。TorchTune作为一个专注于LLMs调优设计的工具,其科学性和实用性备受赞誉。本文将详细介绍TorchTune的功能、特点及其在LLMs调优中的应用,以期为读者提供一个全面而深入的了解。一、TorchTune的诞生背景与意义深度学习技术的发展与深度学习模型(LLM

随着互联网的发展,PHP应用程序在互联网应用领域中变得越来越常见。但是,PHP应用程序的高并发访问会导致服务器的CPU使用率高,从而影响应用程序的性能。为了优化PHP应用程序的性能,Memcached缓存技术成为了一种很好的选择。本文将介绍如何使用Memcached缓存技术优化PHP应用程序CPU的使用率。Memcached缓存技术简介Memcached是一

自GPT-4问世以来,人们一直惊艳于它强大的涌现能力,包括出色的语言理解能力、生成能力、逻辑推理能力等等。这些能力让GPT-4成为机器学习领域最前沿的模型之一。然而,OpenAI至今未公开GPT-4的任何技术细节。上个月,乔治・霍兹(GeorgeHotz)在接受一家名为LatentSpace的AI技术播客的采访时提到了GPT-4,并称GPT-4其实是一个混合模型。具体来说,乔治・霍兹称GPT-4采用由8个专家模型组成的集成系统,每个专家模型都有2200亿个参数(比GPT-3的1750亿参数量略多

随着互联网的快速发展,网站性能对于用户体验和SEO排名的影响越来越大。为了提高自己的网站性能,我们需要进行性能压测和调优来定位问题并进行优化。而宝塔面板作为一个广受欢迎的服务管理面板,提供了方便简单的性能压测和调优工具。下面将介绍如何通过宝塔面板进行网站性能压测和调优。一、性能压测性能压测是通过模拟用户访问来测试网站的负载能力和响应速度。在宝塔面板中,我们可

操作系统的性能优化是保证系统高效运行的关键之一。在Linux系统中,我们可以通过各种方法进行性能调优和测试,以确保系统的最佳性能表现。本文将介绍如何进行Linux系统的系统调优和性能测试,并提供相应的具体代码示例。一、系统调优系统调优是通过调整系统的各项参数,来优化系统的性能。以下是一些常见的系统调优方法:1.修改内核参数Linux系统的内核参数控制着系统运
