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
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











php-fpm を使用して高パフォーマンスのチューニングを行う方法 PHP は、Web アプリケーションや動的 Web サイトの開発に広く使用されている、非常に人気のあるサーバーサイド スクリプト言語です。ただし、トラフィックが増加すると、PHP アプリケーションのパフォーマンスが低下する可能性があります。この問題を解決するには、php-fpm (FastCGIProcessManager) を使用して高性能チューニングを行うことができます。この記事では、php-fpm を使用して PHP アプリケーションのパフォーマンスを向上させる方法とコード例を紹介します。 1つ、

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 は、

Go 言語の Web サイトのアクセス速度を向上させるためのチューニング方法の詳細な説明 要約: 急速に発展するインターネット時代において、Web サイトのアクセス速度はユーザーが Web サイトを選択する重要な要素の 1 つとなっています。この記事では、Go言語を使用してWebサイトのアクセス速度を最適化する方法を、ネットワークリクエストの最適化、キャッシュの使用、同時処理の実践体験を含めて詳しく紹介します。この記事では、読者がこれらの最適化手法をより深く理解し、適用できるようにするためのコード例も提供します。 1. ネットワーク リクエストの最適化 Web サイト開発において、ネットワーク リクエストは避けられないリンクです。ネットワークリクエストを最適化すると、

オペレーティング システムのパフォーマンスの最適化は、効率的なシステム運用を確保するための鍵の 1 つです。 Linux システムでは、システムの最高のパフォーマンスを確保するために、さまざまな方法でパフォーマンスのチューニングとテストを実行できます。この記事では、Linux システムのシステム チューニングとパフォーマンス テストを実行する方法を紹介し、対応する具体的なコード例を示します。 1. システムチューニング システムチューニングとは、システムのさまざまなパラメータを調整することにより、システムのパフォーマンスを最適化することです。 1. カーネル パラメータを変更する Linux システムのカーネル パラメータは、システムの動作を制御します。

md5 を修正した後はオリジナルとみなされますか? インターネット時代では、オリジナルのコンテンツを作成することが重要な価値とリソースになりました。ただし、その後は独創性と侵害が問われます。著作権侵害や盗作を防ぐために、多くの人がさまざまな方法を使ってオリジナルの作品を保護しようとしています。一般的な方法の 1 つは、MD5 アルゴリズムを使用して作業を変更し、「アルゴリズム保護」の効果を達成することです。 MD5 (MessageDigestAlgorithm5) は、一般的に使用されるメッセージ ダイジェスト アルゴリズムです。

インターネットの急速な発展に伴い、Web サイトのパフォーマンスがユーザー エクスペリエンスと SEO ランキングに与える影響は増大しています。 Web サイトのパフォーマンスを向上させるには、パフォーマンス ストレス テストとチューニングを実行して問題を特定し、最適化する必要があります。 Pagoda パネルは、人気のあるサービス管理パネルとして、便利でシンプルなパフォーマンス ストレス テストおよびチューニング ツールを提供します。以下では、Pagoda パネルを使用して Web サイトのパフォーマンス ストレス テストとチューニングを実行する方法を紹介します。 1. パフォーマンスストレステスト パフォーマンスストレステストとは、ユーザーのアクセスを模擬してWebサイトの負荷容量や応答速度をテストすることです。パゴダパネルでは、次のことができます。

GPT-4 の出現以来、人々は、優れた言語理解能力、生成能力、論理的推論能力などを含む、その強力な創発能力に驚かされてきました。これらの機能により、GPT-4 は機械学習の分野で最も最先端のモデルの 1 つとなります。ただし、OpenAIはこれまでのところGPT-4の技術的な詳細を明らかにしていない。先月、George Hotz 氏は、LatentSpace と呼ばれる AI テクノロジー ポッドキャストのインタビューで GPT-4 について言及し、GPT-4 は実際にはハイブリッド モデルであると述べました。具体的には、George Hotez 氏は、GPT-4 は 8 つのエキスパート モデルで構成される統合システムを使用しており、各モデルには 2,200 億個のパラメーター (GPT-3 の 1,750 億個のパラメーターよりわずかに多い) があると述べました。
