タグ

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

    技術的な標準・規格 (TODO: IATA, Microsoft) tz database タイムゾーンに関する、ソフトウェア・エンジニアにとって最も標準的なデータが tz database (Wikipedia) でしょう。 "Asia/Tokyo" や "Europe/London" のようなタイムゾーンの名前は、この tz database のものです。 tz database のタイムゾーンは "/" の前の最初の部分に大陸名・海洋名を用い、続いて、典型的にはそのタイムゾーン内の著名な都市名・島名をその代表として名付けられています。21 国名は基的に使われません。22 "America/Indiana/Indianapolis" のように3要素で構成されるタイムゾーンも少数ながら存在します。 tz database はボランティアによってメンテナンスされています。タイムゾーンの情

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

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

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