Flashcache、またはステロイドのI / O

おそらく、サーバーの主なボトルネックの1つがディスクサブシステムであることを誰もが既に認識しているでしょう。 これは、特にWebサーバーおよび大規模なDBMSで顕著です。 ハードドライブの製造業者はパフォーマンスを求めて絶えず競い合っていますが、物理学に反対する論争はありません。ハードドライブのヘッドは光の速度でたむろすることはできません:)。



SSDが来ると思われますが、ここにあります-幸せ! 機構はなく、頭が目的のポイントに達するまで待つ必要はありません(特に、データが断片化されているか、OSが一度に多くのことを読み取ろうとしている場合)。 しかし、いいえ-高価で、信頼性が低く、十分なスペースがありません-一般に、サーバーに置くことはできません。



解決策は何ですか? そう、組み合わせて! タスクは、SSDの速度とアクセス時間、およびHDDの信頼性とボリュームを取得することです。 ハードウェアソリューションはありますが、経済的に精通していないため、フラッシュキャッシュを使用してプログラムで実行します。





フラッシュキャッシュとは何ですか?



facebookのflashcacheを使用していますが、何らかの理由でHabréについてはほとんど言及されていません。



FlashcacheはFacebook内で作成され、サーバー上のMySQL(および他のDBMS)を高速化し、2010年にオープンソースとして公開されました。



その本質は簡単です。SSD上の透過的なキャッシュです。 2つのブロックデバイス(通常はhdd-「from where」およびssd-「where」)に基づいて、別のキャッシュデバイスが作成され、システムで使用されます。 SSDの透過キャッシュにより、HDDとSSDの両方の利点を組み合わせることができます。



すべての始まり



ロゴ 約2年前、 私の友人が真剣にドイツからの車の選択と販売でサイトプロジェクトを開始しました。 このサイトは以前は共有ホスティング上に存在し、非常に愚かでした-エンジンは、メインページが約2〜3秒間生成されたときに、誰にでもわかりにくい形で書き込まれました。 出席者の急速な増加は、彼がまだ住んでいる別の人物-fastvps(hetznerの再販業者)からのプロモーションi7への移行をもたらしました。 しばらくして、8〜10の領域の負荷平均はほぼ標準になりました。コードの修正を行う必要があることが明らかになりました。



私はある時点でかなり長い間笑いました-メインページには約3秒間機能するインクルードがあり、それが何をしていたのか明確ではありませんでしたが、それなしでは機能しませんでした。 監査の結果は予測可能ですが、まだ悲しいものです。何を編集するよりも、すべてをゼロから書き直す方が簡単であることが判明しました(現在行っています)。 キャッシングを使用したSSIの一部のブロックの削除は少し役立ちました(nginx + php-fpmは既にそこにスピンしていました)が、何かしなければなりませんでした。 すべてを新たに書くのは長い時間でした(そして所有者はまだそのような決定にまだ満足していません-こんにちは、サーシャおじさん!:))、彼らは代替ソリューションを探し始めました。 意識の端は、どこかで考えを聞いた表面に押し出されました-SSDにキャッシュできます。 思考は回転し、dr死しました。



6か月前、転機が来ました-RAID-1の2台の(たわごとが発生する) ハードドライブが一度にマールボロ地方に飛びました。 hetznerがHDDを変更している間、彼らは決心しました。 そして、彼らはさらにSSDも注文しました。



それの由来



6か月前にすべてが設定され、すぐにflashcacheで行われたため、「前」と「後」のチャートをプロットするためにすべてを停止する必要がありました。



そのため、グラフでは、左から右への断片:





CPU負荷





巨大なロサンゼルスの古き良き時代に戻る:





HDDおよびSSDのロード



ここで、sdaはRAID(mdadm)の一部としてのHDD、sdcはキャッシュとして機能するSSDです。 sdb-空襲から2番目のHDD、私はグラフを与えませんでした-すべてがそこのsdaに非常に似ています。

HDDロード:



ご覧のとおり、HDDは非常に悪くなります-応答時間は1秒に達します。



SSD、ここではすべてがシンプルで明確です:









サイトのロード時間



サイトのメインページの読み込み時間を測定しました。 ブロックキャッシュを使用するSSIがいくつかあります。 これは私のお気に入りのスケジュールです。







私の意見では、結果は明らかです。



結果と落とし穴



サーバーの応答性が大幅に向上し、MySQL-より速く(測定は行われませんでした)、ヘア-より柔らかく、シルキーになりました。



I / Oの負荷が重いためにサーバーがほとんど呼吸していない場合は、考えないでください。 flashcacheをインストールします。 プロジェクトページには、その調理方法と調理方法に関する適切な説明があります。 これにこだわるつもりはありません-これに関するドキュメントがあります。 私が遭遇した困難のいくつかを強調したいだけです。





ウクライナのhabrayuzerに関連する広告として
当社のウェブサイトでは、「ターンキー」を含むドイツの車を見つけて注文できます。



All Articles