タグ

ブックマーク / cero-t.hatenadiary.jp (7)

  • AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋

    以前のエントリーで、AWS LambdaJavaを使ってDynamoDBを呼び出した際に、初回起動にとても時間が掛かったという話を書きました。 http://d.hatena.ne.jp/cero-t/20160101/1451665326 今回は、この辺りの原因をもう少し追求してみます。 なぜ1回目と3回目のアクセスが遅いのか? AWS Lambdaの中身はよく知りませんが、おそらく、アップロードしたモジュールをTomcatみたいなコンテナとして起動させて、外部からコールしているんだろうと予想しました。それであれば、2回目以降のアクセスが早くなることは理解ができます。 ただ、1回目と3回目だけが極端に遅くて、2回目、4回目以降は早くなるというところは腑に落ちません。 その辺りを調べるべく、staticなカウンタを使って、値がどんな風に変化するかを調べてみました。 こんなソースコードです

    AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋
  • DynamoDBでTomcatのセッション共有をするとハマるかも - 谷本 心 in せろ部屋

    AWS仕事で使い始めて1年半、 ようやく頭がクラウド脳に切り替わってきた [twitter:@cero_t] です。 好きなAWSサービスはKinesisです。まだ使ってませんけどね! さて、今日のテーマは「AWSでTomcatのセッション共有」です。 EC2上で動くTomcatのセッションオブジェクトを、DynamoDBを使って共有するというものです。 話題としてはそれなりに枯れていると思うのですが、 実案件で使おうと思ったら問題が出そうになって困ってる、という話です。 発生する問題は? どういう問題が起きるか、先に書いておきます。 発生する問題は、 複数のTomcatをELBで分散させている時に、 スケールインやスケールアウトが短時間に連続して発生すると、 セッションが巻き戻る(先祖返りする)可能性がある、というものです。 セッションが消えるならまだしも、 先祖返りするというのは、実

    DynamoDBでTomcatのセッション共有をするとハマるかも - 谷本 心 in せろ部屋
    yass
    yass 2015/10/20
    " 2. TomcatからDynamoDBに非同期で書き込む。遅延時間は調整可能(最低1秒?)/ 3. Tomcatがセッションを持っていない場合に限り、DynamoDBを参照する。"
  • なぜ僕はCaliperではなくJMHを選んだのか。 - 谷本 心 in せろ部屋

    今日、会社のblogのほうにJMHのエントリーを書きました。 そう、今日のテーマはマイクロベンチマークです。 Javaのマイクロベンチマークツール「JMH」 - Taste of Tech Topics Javaのマイクロベンチマークに興味がある人は、 GoogleのCaliperというマイクロベンチマークツールを既にご存知かも知れません。 しかし上記のエントリーではCaliperには全く触れていません。 なぜか。 いや、Caliperを試そうとしたら、うまく動かせなかったんですよ (^^; そんな、まともに動かせない所や、ドキュメントの更新のないCaliperに幻滅した後 JMHを試してみたら、思いのほか素直で使いやすかったため上で紹介するに至りました。 ちょっとここでは、その辺りの舞台裏を紹介してみます。 Caliperをはじめてみようとしたけど・・・ Caliperのトップページには

    なぜ僕はCaliperではなくJMHを選んだのか。 - 谷本 心 in せろ部屋
  • 僕のOptional<>の使い方がカッコワルイ。 - 谷本 心 in せろ部屋

    昨日、Spring MVCのOptionの使い方がカッコイイという話で、こんなコードを書きました。 @RequestMapping("/") public String hello(@RequestParam("name") Optional<String> name) { if (name.isPresent()) { return "Hello, " + name.get(); } else { return "Hello, John"; } } そしたら、多方面から切れ味するどいツイートが飛んできました あー。 そんなわけで、今回の例で言えば、こう書くのがカッコイイと思います。 @RequestMapping("/") public String hello(@RequestParam("name") Optional<String> name) { return "Hello, "

    僕のOptional<>の使い方がカッコワルイ。 - 谷本 心 in せろ部屋
  • BootのO/RマッパーにMyBatisを使いたい。 - 谷本 心 in せろ部屋

    DBアクセス層に何を使うかって、当によく話題になりますよね。 「これで間違いないでしょ」っていう鉄板の選択肢がないから、だと思うわけですが 「SQLを書きたい日人」な僕としては、消去法的にMyBatisを使っています。 消去法って言うからには、消えた選択肢があるわけで。 Hibernate : アイドントライク ハイバネートサン JPA : アイドントライク ハイバネートサン Doma : アイドントライク APT S2JDBC : キャノット ユーズ ウィズ スプリング DBflute : 少し文化が違うんです。 Mirage : 開発止まっちゃったし。 ホントはMirageあたりが大好物で、過去に実案件に投入した時には まったく問題が起きなくて素晴らしかったのですが 開発が止まっていることと、実績的なアレでなかなか使いにくいんです。 そんなわけで消去法的に残ったMyBatisを使う

    BootのO/RマッパーにMyBatisを使いたい。 - 谷本 心 in せろ部屋
  • IP電話アプリのバッテリー消費を調べてみた(結果編) - 谷本 心 in せろ部屋

    最近、050plusやSkypeなどのIP電話(VoIP)アプリに注目してまして。 常用するならバッテリー消費(待ち受け時間)が気になるところですが、 あちこちのサイトで調べてみると、メリットや機能比較なんかは見つかるものの、 バッテリー消費については「××はアプリが常時起動してるからバッテリー消費が大きい」みたいな、 どういう根拠で言ってんだよ的な情報が多く、ハッキリしません。 「情報がないなら、自分で調べればいいのよ」 というわけで、自分のAndroid端末を使って各IP電話アプリの待ち受け時間を調べてみました。 測定方法は超原始的、 バッテリーを満充電にした状態から、待ち受けにしたまま、電池がなくなるまでの時間を計測しました。 詳しい測定条件なんかは後回しにして、まずは結果から見ていきしましょう。 測定対象 端末 Xperia Pro (旧Sony Ericsson) OS Andr

    IP電話アプリのバッテリー消費を調べてみた(結果編) - 谷本 心 in せろ部屋
    yass
    yass 2013/10/22
    " LINE > Skype > Viber >> (24時間越えの壁) >> OS標準のSIPアプリ >> (12時間越えの壁) >> 050plus / この結果から見れば、使い物になるのはViberまでですね。"
  • Day-4 : Too Big to Fail: Top Tips for Massive, Mission-Critical Enteprise Applications - 谷本 心 in せろ部屋

    大規模ミッションクリティカル系システムのためのTips。 たった1分遅れただけで、満席になってて座れないぐらいの人気セッションでした。 内容的にも、知らなかったTipsが多い、得るものの多いセッションでした。 このセッションで対象にするシステムは、メモリが16〜100GBぐらい、 スレッドが10〜100ぐらい同時に動くような規模のもの。 1. Heapを抑えるために、Composed OOPS (COOPS) を使いなさい。 方法 : -XX:+UseCompressedOOPS 効果 : ヒープに長く残っている情報を圧縮する。実際2.76GB → 2.27GBになった。 2. 1スレッドで(1リクエストで)たくさんのオブジェクトを生成する場合は、NUMAを使いなさい 方法 : -XX:+UserNUMA 効果 : GCの効率が改善する 3. 共有メモリを良いパフォーマンスで読み出したいな

    Day-4 : Too Big to Fail: Top Tips for Massive, Mission-Critical Enteprise Applications - 谷本 心 in せろ部屋
  • 1