Hatena::ブログ(Diary)

bufferings

2010-05-10

今日はbatch putでごにょごにょ

| 03:14 |

ktrwjr

ktrwjr1.0.0のリリース候補版の最終的な動作確認をしてるところ

かなりイイ感じだと思います

api_cpu_msとか意味分からずに眺めてます


お戯れを・・・

そんな中今日はbatch putと戯れてました

30秒以内で何個までputできるんかなぁと


ktrwjrを使ってProductionServer上でテストを実行してました


コードはこんな感じで。

  private void put(int count) {
    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();

    List<Entity> list = new ArrayList<Entity>();
    Iterator<Key> keys = ds.allocateIds("Bar", count).iterator();
    for (int i = 0; i < count; i++) {
      Entity entity = new Entity(keys.next());
      list.add(entity);
    }

    ds.put(list);
  }

  @Test
  public void put100() {
    put(100);
  }

  @Test
  public void put200() {
    put(200);
  }

  // ・・・

で、何個までいけんのん?

  • 320件だとOK
  • 340件だとNG(DeadlineExceededExceptionつまりタイムオーバー)

なので330件あたりが限界なのかな?と

そのあたりのテストを作って実行してみました


すると今度はDatastoreの機嫌がよくなってきたみたいで

340件どころか400件までOKになりました


しばらくすると機嫌が普通になったみたいで

340件でDEEになりました


そんな風に弄ばれた今日でした

f:id:bufferings:20100511030941j:image


追伸

はっ!こんなことしてたらスケールアウトしないじゃないか!

#appengine アプリの処理時間は「平均1秒以下」にすべし!重いのはTQへ! - スティルハウスの書庫

shin1oshin1o 2010/05/11 03:24 > はっ!こんなことしてたらスケールアウトしないじゃないか!

そういう時は数十ミリ秒で返る小さな処理へ大量にリクエストを投げれば分母が大きく…

bufferingsbufferings 2010/05/11 03:33 先生!空のサーブレットにひたすらアクセスですね!

・・・そのうちMLで「分母とか、そういうのやめて下さい!」ですかね。