タグ

Javaに関するmfjtのブックマーク (4)

  • JVM上で動くWebアプリケーションがリソースを食いつぶす原因を探るためにやったこと【Backlog Play化プロジェクト】

    ヌーラボでScalaを書くRubyistの谷です。ヌーラボでは、Backlogの開発を担当しており、最近ではBacklogJavaからScala / Play Frameworkに移行するプロジェクトのメンバーでした。 BacklogのPlay化プロジェクトでは、OutOfMemorryError(以下、OOM)の発生やCPU使用率とロードアベレージが上がったままという、Java Virtual Machine(以下、JVM)上で動くBacklogのパフォーマンスに関する問題に対処すべく、何度かHeap/Thread dumpを見る機会がありました。 私がPlay化プロジェクトで取り組んだパフォーマンス改善の知見や経験をもとに、記事では「JVMで起こったパフォーマンスの問題の切り分け方」についてお届けします。 はじめに 番環境でしばらく動かしていると、コード自体は正しく実行できるけ

    JVM上で動くWebアプリケーションがリソースを食いつぶす原因を探るためにやったこと【Backlog Play化プロジェクト】
    mfjt
    mfjt 2019/10/23
  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
    mfjt
    mfjt 2018/02/20
  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
  • シングルトンパターンを復習しよう - ぼっち勉強会

    目的 遅延初期化ホルダークラスイデオムを最近知ったので、良い機会なので復習してみる。 勉強内容 シングルトンにする意味 遅延初期化する?しない? 遅延初期化ホルダークラスイデオム(オンデマンド初期化ホルダークラスイデオム)について おまけ:phpJavaの違い シングルトンにする意味 不要なインスタンスを作らないこと 生成処理が一度しか行われないのでコストを抑えられます メモリの節約に繋がります 開発者が見た時に「インスタンスが一つしか生成されない」ことを明示的に表す 開発者の負担を減らす。よけいなことを考えなくていい 遅延初期化する?しない? 一般的なシングルトンのコードは次のようになるでしょう。 public class Singleton { private static final Singleton instance = new Singleton(); private Sin

    シングルトンパターンを復習しよう - ぼっち勉強会
  • 1