腾讯雲アカウント購入: メモリ型サーバの超スループットの本当の血涙体験

クラウド 2026-06-17 阅读 4
1

今日のインターネット圏では、設計者とバックエンド開発者たちが毎日口にしている言葉は

高同時、低遅延、超大スループット

これらの指標を追求するために、私たちは必死にコードを最適化し、Redisキャッシュを追加し、MySQLの読み書き分離をし、ライブラリテーブルを作る…… 髪を落とした。しかし、多くの場合、本当の恐怖の瞬間的な洪峰 (例えば、電気商の秒殺、抽選、大量のモノネットワーク設備が毎秒データを報告する) に直面して、どのように最適化してもサーバのCPUはまだ瞬時にいっぱいになっていて、システムのスループットは死活できない。

その後、私の兄弟は一言で私を目覚めさせた。「あなたは毎日ソフトウェア層で補修をしていて、どうして基礎的なハードウェアを見ないのですか

あなたの予算で買った汎用型の例は、基礎的なメモリ帯域幅とCPUキャッシュがすでにあなたに搾られています!

半信半疑の下、私たちのチームは自費でコアのキャッシュとデータ処理ノードをクラウド・メーカーのメモリ型サーバ (memory- optied Instance) に移行した。今日のこのチュートリアルでは、虚しい公式PPTパラメータについては、私は第一線の設計者の実写的な視点で、あなたを全方位的、没入的に体験します

メモリ型サーバが「超大スループット」業務にぶつかったとき、どのような爽快な体験だったのか?

一、メモリ型サーバとは何ですか?(大口語版)

実測について話す前に、私たちはまず次のことを明らかにしなければならない

メモリ型サーバは、どこが特別なのでしょうか?

多くの人は、サーバはCPUの数コア、メモリの数GBを見ているのではないかと思っています汎用型 (ジェネラルプリポーズ) サーバは16コア64G、メモリ型 (memoryoptied) サーバも16コア64G、どのメモリ型で高いですか?Iq税を徴収していますか?

答えは:

メモリの「質」と「配合」は全く違う。

恐怖の「配合」: 汎用型サーバのCPUとメモリの比率は通常 $1:4 $ (例えば、4コア16G) であるメモリ型サーバの割合は、通常、 $1:8 $ 、さらには $1:16 $ (例えば、4コア32G、または8コア64G) です。

ハードウェアレベルの「オーバークロック・チャネル」: メモリ・サーバは、多くの場合、最新のハイエンドCPU (高周波数のAMD EPYCやIntel Xeon Scalableプロセッサなど) を採用していますより多くのメモリチャネルを持っています。これは、普通のサーバメモリは2車線の県道を走っているようなもので、メモリ型サーバのメモリは双方向8車線の超高速道路を走っていることを意味します。メモリの帯域幅と基準周波数は汎用型より大幅に高くなります。

非常に低い遅延: 基礎構造がメモリアクセスを極端に最適化したため、CPUがメモリデータにアクセスする遅延 (Latency) がナノレベルに圧縮された。

、シーンの再現: 汎用型サーバを苦しめる「地獄業務」

「超スループット」を直感的に感じるために、私たちが直面していたことを説明します

実際のビジネスシーン

:

私たちには、毎晩8:00から9:00のゴールデンタイムに、全国の数十万台のスマートデバイスが同時にオンラインになるモノネットワーク (IoT)Appがあります。1台の設備は0.5秒ごとに複雑なJSONデータ (温度、電力量、GPS軌跡、ユーザー操作ログなどを含む) をサーバに報告する。

業務のペインポイント: QPS (1秒あたりの要求数): ピークは100、000 +。データの特徴: 高周波、スループットは極めて大きいが、単一のパケットは小さい。古いアーキテクチャ: 1台の汎用型サーバ (16コア64G) がNginx転送を行い、2台の汎用型サーバがGo言語で書かれた受信サービスを実行し、データはまずローカルのRedisキャッシュクラスタに書き込まれ非同期スクリプトからMongoDBに印刷します。

古いアーキテクチャの崩壊の日常:

テンセントクラウドアカウントの購入

毎晩8時半、警察のメールが爆発し始めた。監視看板を開けてみると

CPU使用率は95% 以上に安定している。

Nginxは502 Bad Gatewayまたは504 Gateway Timeoutを狂ったように報告し始めた。

システムのスループット (Throughput) カードは30、000/sでもう行けなくなり、残りの要求はすべてキューに並んで、タイムアウトして、設備側に再試行され、より恐ろしい雪崩効果を引き起こした。

私たちは、メモリが40% 未満になったのに、なぜシステムが詰まったのかと思っていました

その後、ツールを使って基礎データを取得して初めて知った

データのやり取りが頻繁であるため、CPUは「メモリがデータを転送するのを待つ」というコンテキストの切り替えとバスのキューに多くの労力を費やしている (つまり、メモリ帯域幅のボトルネック)。

三、限界調整: メモリ型サーバを交換する24時間実測

この問題を解決するために、私たちは思い切って、サービスを受ける2台の汎用型サーバを、直接2台に交換した

メモリ型サーバ (16コア128G、最新世代DDR5メモリアーキテクチャを採用)

再びオンラインになった後、私たちはストレステストツールを使って10万同時の限界テストをシミュレーションした。その本当の体験は2つの言葉でしか表現できない

衝撃

圧力測定中に記録したコアデータの比較表を以下に示します

モニタリング指標

旧アーキテクチャ: 汎用型インスタンス (16コア64G × 2)

新アーキテクチャ: メモリ型インスタンス (16コア128G × 2)

パフォーマンスの向上と体験の変化

限界スループット

~ 35,000リクエスト/秒 (ボトルネックに遭遇)

112,000リクエスト/秒

3.2倍に急上昇し、すべての流量を簡単に飲み込みます。

平均応答遅延

240ms(大量行列

タイムアウト)

4.2ms

ほぼ瞬時に応答し、設備側はタイムアウトがない

ピークCPU使用率

95% - 100%

32 ~ 40%

CPUは極めてのんびりしていて、まだ大きな余裕がある

メモリ帯域幅使用率

100% 近く (バス渋滞)

28%

8チャンネルDDR5の威力、路幅車が少ない

リアルな調整体調:

圧力測定ツールが合併数を10万に押した瞬間、私の手のひらは汗をかいていた。しかし、不思議なことに、監視曲線は以前ほど急上昇していない。

メモリ型サーバのCPU曲線は軽く持ち上げただけで、優雅に35% 程度にとどまる。受信サービス全体は大きなスループットで、そよ風の中を散歩するように楽に表現されている。もともと汎用型サーバでよく発生していたメモリの断片化、ガベージコレクション (GC) によるシステム停止 (Stop-the-World) は、メモリ型インスタンスでは非常に大きなメモリバッファ帯域幅で消えてしまった。

四、深さの底:超スループットの背後にある3つの秘密

ここを見て、「お兄さん、サーバータイプを変えて、なぜ性能がこんなに劣っているのですかこの背後にある基礎的な論理とは何ですか。」と言いました

今回の実測に合わせて、私は皆さんに内幕を分解してみましょう

秘密1: CPUの「無効待機」を撲滅した

コンピュータの基盤では、CPUの演算速度はメモリの読み書き速度より何百倍も速い。もしあなたの業務が「大スループット」であれば (例えば、高同時、頻繁にキャッシュを読み書きする) 、CPUは常に手元の仕事を止めて、メモリがデータを転送するのを待つ必要がある。

汎用型サーバのメモリ帯域幅が低く、CPUは「水を切るなどのデータ」で60% の時間があることが多い。メモリ型サーバの高帯域幅、高チャネル設計は

メモリに一番速いスピードでデータをCPUに与えます。

CPUのマルチコア性能を本当に搾取します。

秘密2: Redis/Memcachedにほぼ完璧な物理温床を提供した

私たちの枠組みにはRedisがたくさん使われています。Redisは純粋なメモリデータベースで、しかも

シングルスレッドモデル

汎用型サーバでは、Redisが毎秒数万回の読み書きに遭遇すると、単線はメモリの応答が遅いため、カールトンになる。メモリ型サーバを交換した後、基礎的なメモリ遅延が極めて低く、Redisのシングルスレッドの優位性が極めて発揮され、単体で簡単に10万 + QPSを突破し、スループットが直接倍増した。

秘密3:超大メモリ容量による「空間交換時間」

メモリ型サーバのメモリが十分に寛大になったため (128G、256G) 、私たちはGo言語コードに直接巨大なものを開いた

メモリバッファ

データが入ってきたら、すぐにディスクを読み書きしたり、複雑になったりする必要はありません

のネットワーク検証は、まずすべて脳がメモリに積まれていない。サーバがバックグラウンドでゆっくりとデータベースにバッチ (Batch) する。このような「空間交換時間」の遊び方は、メモリがいっぱいのサーバーでしかできない。

五、ピット回避ガイド: どの業務が目を閉じて入るべきですか?どれが買わないですか?

メモリ型サーバは爽快だが、その価格は確かに汎用型より高い。みんなのお金を節約するためにセットをまとめました

選定ピットガイド

💡躊躇しないでください。これらのシーンは「メモリ型サーバ」でなければなりません

高性能キャッシュノード: サーバが主にRedis、Memcached、または高同時Nginxキャッシュを実行するために使用されている場合。

リアルタイム大データ分析/メッセージキュー: 例えば、Kafka、Spark stream、Flinkなど。これらのミドルウェアは、メモリ帯域幅に対する要求が非常に高い。

高合併ゲームサーバ: ゲーム中の全図プレイヤーの座標、血量、状態はすべてメモリの中で頻繁にやり取りし、汎用型サーバは全く担げない。

高負荷の自己構築データベース: 例えば、常駐メモリが必要なClickHouse、大メモリのMySQLインスタンス。

❌私のアドバイスを聞いて、これらのシーンは「汎用型/計算型」を選ぶだけで十分です

普通の企業公式サイト、ブログ、アプレットのバックグラウンド: 数百人を支え、メモリ型でお金を浪費する。

CPU計算に大きく依存する業務: 例えば、ビデオトランスコード、画像レンダリング、科学計算。これらの業務に必要なのは、高クロック周波数で高性能なCPU (計算型Cインスタンスを選ぶべき) で、メモリ帯域幅にそれほど敏感ではない。

純粋な静的ファイルダウンロードステーション/バックアップディスク: ボトルネックはネットワーク帯域幅とハードディスクで処理され、メモリとは関係ない。

六、まとめ

今回の「メモリ型サーバの超大スループットの本当の実測」は、我々のチームの過去の「唯一のCPU論」の偏見を徹底的に打ち破った。

テンセントクラウドアカウントの購入

クラウドコンピューティング時代には、システムのボトルネックをなくすことは、コードをいかにうまく再構築したかではなく、あなたが

適切な業務は、分業に最も合ったハードウェアに置く

。メモリ型サーバは恐怖の帯域幅と低遅延で、本当の「力大煉瓦飛」とは何かを見せてくれた。

もしあなたの業務も「高合併、大呑み、CPUが高すぎる」と苦しんでいるなら、今夜はメモリ型の実例を開いて圧力測定をしてみてください。私を信じてくださいそのような滑らかな超スループット体験は、すべてのお金が刃にかかっていると感じます!

cloud
← 返回新闻中心