1

多数の Web サーバーがあり、それぞれが 1 つのバージョンの ColdFusion を実行しています。クラスターの前にロード バランサーがあります。

明らかに、これらの各サーバーには独自の CF アプリケーションが実行されており、これにより、CF アプリケーション レベルでクエリ キャッシュが実装されます。ただし、これらのサーバーはすべて 1 つの Web アプリケーションにサービスを提供するため、これらのキャッシュされたクエリの多くは CF アプリケーション インスタンス間で複製されます。

Web アプリケーション レベルで、つまり多数の CF インスタンスにわたってクエリ キャッシュを実装する方法はありますか。または、存在しない場合、データベース サーバーの負荷を最小限に抑えるためにクラスターをセットアップするためのより良い方法はありますか?

私は自分自身を明確にしたことを願っています:)

乾杯、シアラン

4

5 に答える 5

3

memcachedを試してみることを検討してください。

于 2008-12-15T14:58:42.307 に答える
2

memcached を見てみましょう。これを ColdFusion に統合するためのオープン ソース プロジェクトがここにあります: cfmemcached

Railo を使用している場合は、"クラスター" スコープもあると聞いています。

どちらも利用できない場合や魅力がない場合は、代わりにサーバーの 1 つを設定して、キャッシュするクエリを処理し、そのサーバーから Web サービスを介して直接フェッチすることもできます。そうすれば、それらを 1 つのサーバーだけにキャッシュすることができます。これにより、クラスター全体のメモリ フットプリントが削減され、db サーバーへのアクセス頻度も削減されます。ただし、クエリのキャッシュを処理しているサーバーをクラスターから外して、クエリのキャッシュと、前面にあるマシンからオフロードしたいものに専念し、他のサーバーが外部トラフィックを処理することをお勧めします。

于 2008-12-31T03:30:03.680 に答える
1

各 Web サーバーでEHCacheを使用することにしました。部分的なページ キャッシュが可能であり、memcached などの集中型キャッシュ サーバーに拡張できるためです。これまでのところとても満足しています。

すべての提案に感謝します!

于 2009-04-07T08:19:18.063 に答える
0

サーバー間でクラスタ化してアプリケーション スコープを共有できますが、ColdFusion のエンタープライズ バージョンを使用する必要があります。詳細はこちら: http://livedocs.adobe.com/coldfusion/7/htmldocs/00001774.htm

于 2009-01-14T00:07:00.913 に答える
0

j2ee セッションをオンにすると、ColdFusion でセッション スコープをクラスタ化できます。ただし、クラスター化されたスコープが行うことは、サーバー間でデータをコピーすることだけです。そのため、クエリは引き続き 3 つのサーバーすべてにコピーされます。それで、あなたは今いる場所に戻るでしょう。

ただし、アプリケーション スコープを使用する代わりに、cfquery の CachedWithin 属性を使用するだけです。このようにして、CF エンジンに実際のキャッシュ管理を行わせることができます。メモリが手に負えなくなるのを防ぎ、サーバー間で大量のデータをコピーするオーバーヘッドを追加しません。

于 2009-01-16T22:19:09.703 に答える