首页 数据库 mysql教程 Memcached调优

Memcached调优

Jun 07, 2016 pm 04:31 PM
memcached 原创 完整 文章 调优

文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》 项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力。但是期间遇到了一些问题,这里记录一些调优细节。? 客户端选择 最开始我使用的是 Memcached Java Client,

文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》

Memcached调优项目中有一个对实时响应性比较高的服务,引入了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客户端的综合的性能试验: 链接。

文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》

分享到:

你可能也喜欢:

  • Memcached调优 Issue record: “No thread for socket” about Memcached
  • Memcached调优 设计缓存框架需要关注的要素
  • Memcached调优 Ehcache详细解读
  • Memcached调优 OSCache框架源码解析
  • Memcached调优 Javascript Memoizer

Memcached调优

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用php-fpm进行高性能调优 如何使用php-fpm进行高性能调优 Jul 08, 2023 am 11:30 AM

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

今日头条发布文章怎么才能有收益?今日头条发布文章获得更多收益方法! 今日头条发布文章怎么才能有收益?今日头条发布文章获得更多收益方法! Mar 15, 2024 pm 04:13 PM

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

提升Go语言网站访问速度的调优实践详解 提升Go语言网站访问速度的调优实践详解 Aug 26, 2023 pm 07:27 PM

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

革新LLM微调之道:全方位解读PyTorch原生库torchtune的创新力量与应用价值 革新LLM微调之道:全方位解读PyTorch原生库torchtune的创新力量与应用价值 Apr 26, 2024 am 09:20 AM

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

如何使用Memcached缓存技术优化PHP应用程序CPU的使用率? 如何使用Memcached缓存技术优化PHP应用程序CPU的使用率? Jun 21, 2023 pm 05:07 PM

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

GPT-4使用混合大模型?研究证明MoE+指令调优确实让大模型性能超群 GPT-4使用混合大模型?研究证明MoE+指令调优确实让大模型性能超群 Jul 17, 2023 pm 04:57 PM

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

如何通过宝塔面板进行网站性能压测和调优 如何通过宝塔面板进行网站性能压测和调优 Jun 21, 2023 pm 01:31 PM

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

如何进行Linux系统的系统调优和性能测试 如何进行Linux系统的系统调优和性能测试 Nov 07, 2023 am 11:33 AM

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

See all articles