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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











고성능 튜닝을 위해 php-fpm을 사용하는 방법 PHP는 웹 애플리케이션 및 동적 웹 사이트를 개발하는 데 널리 사용되는 매우 널리 사용되는 서버 측 스크립팅 언어입니다. 그러나 트래픽이 증가하면 PHP 애플리케이션의 성능이 저하될 수 있습니다. 이 문제를 해결하기 위해 고성능 튜닝을 위해 php-fpm(FastCGIProcessManager)을 사용할 수 있습니다. 이 기사에서는 php-fpm을 사용하여 PHP 애플리케이션의 성능을 향상시키는 방법을 소개하고 코드 예제를 제공합니다. 하나,

1. 오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있습니까? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! 1. 기본 권익 활성화: 기사의 원본은 광고를 통해 수익을 얻을 수 있으며, 동영상은 가로 화면 모드에서 원본이어야 수익을 얻을 수 있습니다. 2. 팬 100명 권리 활성화: 팬 수가 100명 이상에 도달하면 마이크로 헤드라인, 오리지널 Q&A 작성, Q&A 수익을 얻을 수 있습니다. 3. 독창적인 작품을 고집하라: 독창적인 작품에는 기사, 마이크로 헤드라인, 질문 등이 포함되며, 300단어 이상이어야 합니다. 불법 표절 저작물을 원작으로 출판할 경우 크레딧 점수가 차감되며, 수익금도 차감되므로 주의하시기 바랍니다. 4. 수직성: 전문 분야에서 기사를 작성할 때 분야를 넘나들며 마음대로 기사를 작성할 수 없으며 적절한 추천을 받을 수 없으며, 작품의 전문성과 정확성을 확보할 수 없으며 팬을 유치하기가 어렵습니다. 그리고 독자들. 5. 활동: 높은 활동,

인터넷이 발전하면서 PHP 애플리케이션은 인터넷 애플리케이션 분야에서 점점 더 보편화되었습니다. 그러나 PHP 애플리케이션의 동시 액세스가 높으면 서버의 CPU 사용량이 높아져 애플리케이션 성능에 영향을 줄 수 있습니다. PHP 애플리케이션의 성능을 최적화하기 위해서는 Memcached 캐싱 기술이 좋은 선택이 되었습니다. 이 기사에서는 Memcached 캐싱 기술을 사용하여 PHP 애플리케이션의 CPU 사용량을 최적화하는 방법을 소개합니다. Memcached 캐싱 기술 소개 Memcached는

인터넷의 급속한 발전으로 인해 웹사이트 성능은 사용자 경험과 SEO 순위에 점점 더 많은 영향을 미치고 있습니다. 웹사이트의 성능을 향상시키기 위해서는 성능 스트레스 테스트와 튜닝을 수행하여 문제를 찾아 최적화해야 합니다. 인기 있는 서비스 관리 패널인 Pagoda Panel은 편리하고 간단한 성능 스트레스 테스트 및 튜닝 도구를 제공합니다. 다음은 Pagoda 패널을 통해 웹 사이트 성능 스트레스 테스트 및 조정을 수행하는 방법을 소개합니다. 1. 성능 스트레스 테스트 성능 스트레스 테스트는 사용자 접속을 시뮬레이션하여 웹사이트의 로드 용량과 응답 속도를 테스트하는 것입니다. Pagoda 패널에서는 다음을 수행할 수 있습니다.

Go 언어 웹 사이트 접속 속도 향상을 위한 튜닝 방법에 대한 자세한 설명 요약: 빠르게 발전하는 인터넷 시대에 웹 사이트 접속 속도는 사용자가 웹 사이트를 선택하는 중요한 요소 중 하나가 되었습니다. 이 글에서는 네트워크 요청 최적화, 캐시 사용, 동시 처리 등의 실무 경험을 포함하여 Go 언어를 사용하여 웹 사이트 액세스 속도를 최적화하는 방법을 자세히 소개합니다. 이 기사에서는 독자가 이러한 최적화 기술을 더 잘 이해하고 적용하는 데 도움이 되는 코드 예제도 제공합니다. 1. 네트워크 요청 최적화 웹사이트 개발에서 네트워크 요청은 불가피한 연결 고리입니다. 그리고 네트워크 요청을 최적화하면

인공 지능 분야에서 LLM(대형 언어 모델)은 연구 및 응용 분야에서 점점 더 새로운 핫스팟이 되고 있습니다. 그러나 이러한 거대 기업을 효율적이고 정확하게 조정하는 방법은 업계와 학계가 항상 직면한 중요한 과제였습니다. 최근 PyTorch 공식 블로그에는 TorchTune에 대한 기사가 게재되어 큰 관심을 끌었습니다. LLM 튜닝 및 설계에 초점을 맞춘 도구인 TorchTune은 과학적 특성과 실용성으로 높은 평가를 받고 있습니다. 이 기사에서는 독자들에게 포괄적이고 심층적인 이해를 제공하기 위해 LLM 튜닝에서 TorchTune의 기능, 특징 및 적용을 자세히 소개합니다. 1. TorchTune의 탄생 배경과 의의, 딥러닝 기술과 딥러닝 모델(LLM)의 발전

운영 체제 성능 최적화는 효율적인 시스템 작동을 보장하는 핵심 중 하나입니다. Linux 시스템에서는 시스템의 최상의 성능을 보장하기 위해 다양한 방법을 통해 성능 튜닝 및 테스트를 수행할 수 있습니다. 이 기사에서는 Linux 시스템의 시스템 튜닝 및 성능 테스트를 수행하는 방법을 소개하고 해당하는 특정 코드 예제를 제공합니다. 1. 시스템 튜닝 시스템 튜닝은 시스템의 다양한 매개변수를 조정하여 시스템 성능을 최적화하는 것입니다. 다음은 몇 가지 일반적인 시스템 조정 방법입니다. 1. 커널 매개변수를 수정합니다. Linux 시스템의 커널 매개변수는 시스템 작동을 제어합니다.

GPT-4의 출현 이후 뛰어난 언어 이해 능력, 생성 능력, 논리적 추론 능력 등 강력한 출현 능력에 사람들은 놀랐습니다. 이러한 기능을 통해 GPT-4는 기계 학습 분야에서 가장 최첨단 모델 중 하나가 되었습니다. 그러나 OpenAI는 지금까지 GPT-4의 기술적 세부 사항을 공개하지 않았습니다. 지난달 조지 호츠(George Hotz)는 AI 기술 팟캐스트인 LatentSpace와의 인터뷰에서 GPT-4를 언급하며 GPT-4가 실제로는 하이브리드 모델이라고 밝혔습니다. 구체적으로 George Hotez는 GPT-4가 8개의 전문가 모델로 구성된 통합 시스템을 사용하며 각 전문가 모델에는 2,200억 개의 매개변수(GPT-3의 1,750억 개의 매개변수보다 약간 더 많음)가 있다고 말했습니다.
