分散メモリーキャッシュ Velocity CTP1 試用

次のようなプログラムを利用して簡単に負荷テストをしてみた。今回は1ホストあたり 128MB の設定で3ホストを使って実験した。OSは Windows Server 2003 R2 x64

using System;
using System.Text;
using System.Data.Caching;

namespace ConsoleApplication1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            StringBuilder s = new StringBuilder();
            var CacheCluster1 = new CacheFactory();
            Cache Cache1 = CacheCluster1.GetCache("default");

            for (int idx = 0; idx < 1000; idx++)
            {
                string key = String.Format("cachedStringKey{0}", idx);
                object cachedObj = Cache1.Get(key);
                if (cachedObj != null && cachedObj is String)
                {
                    Console.WriteLine(String.Format("cached: {0}", key));
                    s.AppendFormat("This string will be stored in cache. No:{0} previuos cache:{1}\n", idx, cachedObj);
                    Cache1.Put(key, s.ToString());
                }
                else
                {
                    Cache1.Put(key, String.Format("This string will be stored in cache. No:{0}", idx));
                }
            }
        }
    }
}

キャッシュに投入されるデータ量がどんどん増えていくプログラムであるが、1回で投入されるデータ量が 500万文字 (おそらく10MB程度)のところでサービスのプロセスが停止してしまった。タスクマネージャで観察していると、プロセスのメモリ使用量が設定ファイルに記述した容量を超えていることが確認できた。データ量チェックが間に合わないような大量書き込みに耐えられないということになる。(サービスが落ちるのではなくて、クライアント側で例外になるだけだったらよかったのだが)

一方別のプログラムを利用し、1回あたり10KB程度のデータで大量の個数のデータを投入するテストもしてみた。

一時的に設定ファイルに記述したデータ量の2倍弱(200MB)ぐらいまで保持するものの定期的に廃棄されるのが確認できた。目安としては1アイテム最大100KB程度といったところだろうか。

(追記) 最適化コンパイルしたexeで10KBずつ、ローカルマシンのサービスに接続するようにしたところ、やはりExpireが間に合わずサービスが落ちた。このプログラムで1ループ当たり10msのウェイトを入れると大丈夫だったので、純粋に単位時間あたりのデータ書き込み量に依存するようだ。

サービスが落ちる時は1.5GBと2GBの間で out of memory となって落ちるのでやはり早いところ x64 版を提供して欲しい。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。