SSDキャッシュストアを備えたSquidまたはその他のHTTPキャッシュ?


9

SSDドライブを搭載したシステムにSquid(または場合によってはニス)キャッシュを設定することを検討しています。

明らかな利点は、これらのシステムの読み取り速度が優れていることであり、ヒット率はかなり高いと私は予想しています。

7台のSSDをRAID構成に配置できると仮定します。(もっとたくさん詰め込むことができるいくつかのケースがあります)

実装に関する質問:

  • RAID0を使用する必要がありますか?(私はドライブが最終的に故障することを期待しているので、これは危険に思われます。)

  • RAID10を使用する必要がありますか?(これにより、コストがかかるディスクフットプリントが半分になります。)

  • RAID5を使用する必要がありますか?(SSDには「悪い」書き込みパフォーマンスと書き込み制限があることが知られており、追加のパリティ書き込みはすべて、これをかなり遅くする可能性があります。)

  • 各ディスクを独自のSquidデータストアとして扱う必要がありますか?(Squidは複数のデータストアをどの程度適切に処理しますか?そして、1つが失敗した場合、または何が起こった場合にどうなりますか?

  • データストアを無視してSSDを大きなSWAPパーティションに作成し、Linux VMにそれを実行させるべきですか?(ずさんなようです)

本番環境でSSDを使用している人々からのアドバイスは大歓迎です。(HTTPキャッシュに使用している場合はesp)


興味深い質問に+1、私はドライブを大規模なスワップパーティションにすることを考えたことはありませんでした
ボブ

ええ、間違いなく興味深い...私はSSDのワゴンに陥らず、代わりにそのRAMにRAMを追加することに強く傾倒しています。
Oskar Duveborn、2009年

残念ながら、必要なキャッシュフットプリントがRAMに収まりません。これらのオブジェクト用に、RAMでバックアップされたSquidキャッシュがすでに用意されています。
ジョエルK

回答:


8

過去9か月間、ssdドライブでワニスを使用してきましたが、非常にうまく機能しました。以前は、コイレイヤーでSquidメモリのみのキャッシュを使用していました。それは機能しましたが、メモリの断片化は頻繁な再起動を必要とする本当の問題でした。また、Squid 2.xは1つのコアのみを使用するため、現在のハードウェアでは効率が悪くなります。

私たちのサイトは非常にキャッシュフレンドリーですが、100メガビット/秒のトラフィックを処理する8コアマシンでのCPU使用率は約10%です。テストでは、2つの1GbポートでCPUの制限に達する前に、帯域幅を使い果たしました。

ssdキャッシュでニスを実行するためのアドバイスがあります。

  • ランダム書き込みのパフォーマンスは本当に重要です。Intel x-25mに落ち着く前に、いくつかのベンダーのSSDドライブを試しました。4kランダム書き込みでわずか.1MB / sの投稿を見たことがありますが、x-25mでは24MB / sの4kランダム書き込みを取得します。

  • RAID0。2.0のキャッシュは永続的ではないため、冗長性について心配する必要はありません。これは再起動を害しますが、それはまれです。新しい設定を読み込んだり、再起動せずにオブジェクトをパージしたりすることができます。

  • mmapモード。ワニスキャッシュは、ファイルにmmapしたり、スワップスペースを使用したりできます。スワップの使用はうまくいきませんでした。同じ量のトラフィックを処理するために、より多くのI / O帯域幅を使用する傾向があります。Linuxスワップインコードには4セクターの先読みがあります。これを削除するパッチを作成しましたが、本番環境では試していません。

  • 締め切りスケジューラ。2.6.28+では、これはssd対応であり、適切に実行されます。私たちは何もしませんでしたが、I / O帯域幅が制限されるようになると、締め切りが公平になることがわかりました。

  • 先読みを無効にします。回転の遅延がないため、必要なだけの理由で余分なデータを読み取る意味がありません。I / O帯域幅はこれらのものにとって貴重です。

  • 2.6.28以降を実行します。Linuxの多くのスペースのmmapは、メモリマネージャーに優れたワークアウトを提供しますが、split lruパッチは多くのことを助けます。更新すると、kswapd cpuの使用率が大幅に低下しました。

リンクテキストで、ワニスで使用するいくつかのツールと同様に、vclファイルを投稿しました。vclには、maxmindデータベースに基づく非常に高速なgeoiplookupサーバーを実装するきちんとしたハックも含まれています。


1

SSDをHTTPキャッシュとして使用していませんが、次のような観察が可能です。

すべてのSSDが同等であるとは限らないため、適切なSSDを選択するように非常に注意する必要があります。FusionIOは、PCIeを搭載したSSDであり、(比較的容量が小さい)本当にハイエンドのパフォーマーですが、コストがかかります。IntelのX25-E SLC SSDは非常に良好に動作し、より手頃な価格ですが、それでも容量が低くなっています。研究してください!X25-E SLCバリアントを本番システムで使用しているため、間違いなくお勧めできます。

そこには他にもSSDSがあり、読み取り/書き込み速度が優れていますが、キャッシュなどの重要なことはランダムIOであり、多くのSSDは回転ディスクとほぼ同じランダムパフォーマンスを提供します。SSDへの書き込み増幅効果により、回転するディスクのパフォーマンスが向上することがよくあります。多くのSSDには低品質のコントローラー(古いJMicronコントローラーなど)があり、状況によってはパフォーマンスが大幅に低下する可能性があります。Anandtechや他のサイトは、iometerなどのツールとの優れた比較を行っています。そこで確認してください。

そしてもちろん、SSDは小さいです。Intel X25-Eは今まで見た中で最高のSATA SSDだと思いますが、32 GBと64 GBのバリエーションしかありません。

RAIDレベルについては、標準のRAIDパフォーマンスノートが引き続き適用されます。RAID 5への書き込みには、基本的に、変更するデータブロックの読み取り、パリティブロックの読み取り、パリティの更新、データブロックの書き込み、およびパリティの書き込みが含まれるため、他のRAIDよりもパフォーマンスが低下します。 SSDでさえ、レベル。ただし、X25-EのようなドライブのランダムIOパフォーマンスが非常に高い場合は、同様のサイズのアレイの回転ディスクでのランダムIOよりもパフォーマンスが優れているため、これはおそらくそれほど重要ではありません。

私が見たところ、少なくともシーケンシャルパフォーマンスに関する限り、RAIDコントローラの帯域幅は7ディスクRAIDセットから最大の利益を得るには早すぎます。現在のSATAコントローラーモデル(3ware、arecaなど)からは、約800MB / sを超えることはできません。複数のコントローラー(たとえば、単一のRAID10ではなく複数のRAID1)にわたってより小さなアレイを使用すると、これが改善されますが、各アレイの個々のパフォーマンスは低下します。

HTTPキャッシュに関しては、まともなアレイの回転ディスクと十分なRAMを提供するほうがよいと思います。頻繁にアクセスされるオブジェクトは、メモリキャッシュ(Squidの内部キャッシュまたはOSのfsキャッシュ)に残ります。マシンにRAMを追加するだけで、ディスクの負荷を大幅に減らすことができます。大規模なSquidキャッシュを実行している場合は、多くのディスク領域が必要になる可能性があり、高性能のSSDは依然として比較的低い容量しかありません。


X25-Mも使用可能
パイロリスティカル2009年

私は宿題を終え、JMicronsを避けることを知っています。私は主にX25-Ms(Intel MLC)とおそらく新しい(非JMicron)OCZ Vertexシリーズを検討していました。
ジョエルK

わあ、ocz頂点は、x25-mよりも最大ランダム書き込みが少ないです!!!
Pyrolistical 2009年

1

SSDドライブについてはあまり詳しくありませんが、問題の解決に役立つ可能性のある、私が使用したアーキテクチャについてお話しすることができます。

きょうだい

私の場合、それぞれ16GBのRAMを備えた4台のサーバーを構築しました。Squidが使用するメモリ内キャッシュとして9GBを設定しました。それらを兄弟のセットとして構成したので、1つのサーバーへのクエリがデータを検索する前に他のサーバーにクエリを送信しました。全体で、36GBのメモリキャッシュがありました。彼らの間のコミュニケーションが行き詰まり始めているので、私は4人の兄弟を超えませんでした。

VIP

クライアントが通信する4つのサーバーにVIPを構成しました。これにより、1つのサーバーがダウンしたときに何が起こるかが解決されました。

子供達

127.0.0.1で実行されているローカルSquidサーバーをクエリするようにWebアプリケーションを設定しました。次に、このSquidインスタンスの親をVIPとして構成しました。これにより、VIP全体がダウンした場合に非常に迅速なフェイルオーバーが可能になります。親が応答しない場合、子はサービスに直接問い合わせます。単一のSquidサーバーを使用していて、VIPがない場合にも便利です。もちろん、ウェブサーバー上のローカルSquidインスタンスがダウンした場合、すべてが停止して停止します。

イカ自体

私は3.0を実際には見ていませんが、2.xはまだシングルスレッドです。ある時点で、CPUまたはTCPバッファーが不足することになります。可能であれば、キャッシュを2〜3つ少ないボックスに分散します。また、システムの成長が見られる場合は、将来Squidファームを分割する計画を立てることもできます。

いずれにせよ、SSDビルドで頑張ってください。将来はそのルートに行くと思うので、どうなるか聞いてみたいです。


0

RAID 10または5を検討しているのはなぜですか。キャッシュのみであるため、ドライブがダウンしただけでも問題ありません。

raid 0を使用するか、それらを分離してください。ドライブが故障してもキャッシュ全体がダウンしないので、個別にした方が良いと思います。


単一のデータストアが故障した場合、Squidはどの程度うまく回復しますか?(明らかに私はこれをテストする必要があります)RAID5は、Squidがデータストアの障害について優雅でない場合の妥協です。
ジョエルK

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.