タグ

performanceに関するt-tanakaのブックマーク (25)

  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

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

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木です。 先日、アプリケーションサーバーが応答を返さなくなるトラブルに遭遇しました。 今回はその時のトラブルの原因と対策の顛末についてお話しようと思います。 現象 アプリケーションサーバーが突如応答を返さなくなりました。 現象が発生したアプリケーションサーバーのスタックトレースを見ると、あるスレッドの先頭が上記のようになっていました。 "qtp258153142-514386" prio=10 tid=0x00007f40b8dbf000 nid=0x7b4e runnable [0x00007f415ccb0000] java.lang.Thread.State: RUNNABLE at java.util.regex.Pattern$Loop.match(Pattern.java:4692) at java.util.regex.Pattern$G

    遅いッ!遅すぎるッ!Java の正規表現のお話。 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)

    2015/04/11に開催されたJJUG CCC 2015 SpringのタイムテーブルAB4にて発表した「クリスマスを支える俺たちとJava」の資料です。 --- AB-4 クリスマスを支える俺たちとJava 阪田 浩一 (フリュー株式会社/関西Javaエンジニアの会) プリントシール機が、話題になった10年以上前のころと変わらず若い女性に利用されていることをご存知でしょうか? 私が所属するフリュー株式会社は、プリントシール機(プリ機)を出している会社です。そしてWebにてプリ機と連動して画像を取得するサービスを提供しています。実はこのサービス、会員数が1000万人を超えており、女性で特定の年齢層であれば90%以上の方が会員となっています。 JavaRDBMS、分散ファイルシステムMogileFSにて構築したこの少し古いWebアプリケーションは、当初ここまでの規模になるとは想定していま

    クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
  • 大規模な負荷でもドキドキしない為のJava EE

    JJUG CCC 2015 Spring セッション資料 企業システムを始めとしたエンタープライズ向けと位置づけられるJava EEですが、質は大規模で信頼性の高いサーバーアプリケーションを開発するためのプラットフォームです。 いわゆるSNSやソーシャルゲームなどコンシューマー向けのサービスのアーキテクチャも大規模化・複雑化している中、Java EEが提供する機能は非常に魅力的です。 このセッションではコンシューマー向けのサービスなどで培われた JPAを用いた開発におけるデータベースのスケールアウト戦略 JUnitとJMeterクラスタで行うゲームサーバーの大規模負荷テストの自動化 など実践的なJava EE開発のケーススタディをご紹介します。Read less

    大規模な負荷でもドキドキしない為のJava EE
  • Webアプリケーション負荷試験実践入門

    7. 負荷試験対象システム全体像 クラウド上でスケール可能なシステムを構成 Elastic Load Balancing Availability Zone Availability Zone RDS DB instance RDS DB instance standby (Multi-AZ) EC2 instance web app server EC2 instance web app server EC2 instance web app server EC2 instance web app server • LAMP構成のシステム • WEBアプリケーションサーバはLBの後ろに設 置されている • 全てAZ(データセンター)をまたいだ形で設置 し、単一障害点はない • キャッシュを利用 • DBはスケールアップで対応 ElastiCache ElastiCache

    Webアプリケーション負荷試験実践入門
  • iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena

    ちょっと気になったので、簡単にベンチマークしてみました。 最初は、ラムダ呼び出しが入る分forEachは遅いんじゃないかと思っていたら、倍の速さに。 もちろん、いろんな条件で変わるんだろうけど、ここまで差が出ることがあるのは驚き。 あと、Collectors.summingIntのような基型に対するCollectorを使うよりは、intStreamに変換してからsumなど専用メソッドを使うほうが圧倒的に速いことも確認できた。 とりあえず、0から10万件のListを用意。 array = IntStream.range(0, 100_000).boxed().collect(Collectors.toList()); それからベンチマーク用のメソッドを用意。 public static void bench(String name, Supplier<Integer> proc){ ben

    iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena
  • JJBugでJava VMの起動高速化の話をしました - nekop's blog

    Japan JBoss User Group - 灼熱の JBossでJava VMの起動高速化の話をしました。非圧縮jarによる高速化はみなさんも使っている有名なソフトウェアで採用されていますが、あまり知られていないチューニングだと思います。大抵の場合200%くらいの高速化ができます。 Java Drag Race Tuning from nekop CMS GCを使わないほうがちょっとだけ速い、とか効果が小さめなオプションについては特に解説していません。 あと話すの忘れてましたがScalaがチューニングしてもあまり変わっておらず、最初から高速なのはデフォルトでbootclasspathを使っているからです。bootclasspathはクラス検証されないので、-Xverify:noneが既に適用されてるのと一緒です。 紹介したのは主にクラスローディングを高速化することによりJavaで書か

    JJBugでJava VMの起動高速化の話をしました - nekop's blog
  • Javaのパフォーマンスについての9つの誤信

    JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ

    Javaのパフォーマンスについての9つの誤信
  • 全自動パラメータチューニングさん

    2013/02/18 Yahoo! Open Hack Day 参加作品 KLab賞 受賞 ソースコードはこちら: https://github.com/mirakui/tuningsan 説明: http://blog.mirakui.com/entry/2013/02/20/003401

    全自動パラメータチューニングさん
    t-tanaka
    t-tanaka 2013/02/18
    変数が一個なら人手でやっても大した負荷はない。問題は相互に関連する複数パラメーターのチューニング。
  • 過負荷をかわす Apache の設定 : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の9日目です。 前回は php を動かしている Apache の手前にリバースプロキシを 置く必要性を解説しました。 今日は、 その前の php のプロセス数を絞る設定と合わせて、実際に Apache で 設定する方法を紹介します。 以降、 php を動かしている Apache の事をアプリサーバー、リバースプロキシ+ 静的ファイル配信を行っている Apache の事をプロキシサーバーと呼びます。 基設定 まずは基的な設定のおさらいです。 アプリサーバー 並列数を絞るには MaxClients を設定します。アプリがどれくらいの時間を CPUの処理で使って、どのくらいの時間を外部リソース待ちに使っているかにも よりますが、だいたいCPU数の1.5倍〜2倍くらいが適当だと思います。 Hyp

    過負荷をかわす Apache の設定 : DSAS開発者の部屋
    t-tanaka
    t-tanaka 2011/12/15
    クローズドネットorベンチマーク用の設定だな。外向けのサーバーで「MaxClients 2」なんてしたら,Slowlorisタイプの攻撃であっさり沈黙する。
  • 3000req / sec と戦う - だるろぐ

    ざっくり概要 ピークで3000req / sec 毎分コンテンツ更新要求 コンテンツ更新の際は他所からデータをapi経由で受け取る コンテンツ更新にはTheSchwartzを使用 なコンテンツを色々してきたログ。 尚、ここに書く技術は大半が周囲のギークな方々にサポートしてもらったもので、僕自身が何かしたわけではない。残念すぎる。 構成 internet -> www(squid -> apache) -> app(memcached -> app) -> db フロントエンド wwwサーバがapacheとsquidを動かしている。apacheがリクエストを受け、squidのキャッシュが有ればそれを返し、無ければバックエンドのappサーバへproxy。 バックエンド appサーバがmemcachedとアプリを動かしている。 それぞれ冗長化してるけど、リクエスト数の割に台数は少ない。 技術があ

    3000req / sec と戦う - だるろぐ
  • 「JavaScriptと性能についての本当の話」をしよう。ダグラス・クロックフォード氏

    JSONの発見者でJavScript界の重鎮であるYahoo!のダグラス・クロックフォード(Douglas Crockford)氏。米オライリーが主催するイベント「Velocity 2011」で、セッション「JavaScript & Metaperformance」を行いました。 いまWebブラウザ間でJavaScriptエンジンの性能競争が行われていますが、その影響とこの先の展望について語っています。JavaScriptプログラマなら必見の内容を、公開されたビデオを基に紹介しましょう。 JavaScript & Metaperformance これから、JavaScriptと性能についての当の話をしよう。 JavaScriptはみなさんご存じかな? いまや世界で最もポピュラーになったプログラミング言語だ。 JavaScriptは、Javaからシンタックスを、Schemeからファーストク

    「JavaScriptと性能についての本当の話」をしよう。ダグラス・クロックフォード氏
  • JavaのHeapDumpBeforeFullGCオプション

    SunのJVMにはHeapDumpBeforeFullGCっていうオプションがあります。知ってました?このキーワードでぐぐっても200件程度しかひっかからないので知らない人も多いんじゃないかと思います。 あまり知られてなさそうなこのオプション。実はすごいできる子です。なんと、名前のとおりFullGC直前にヒープダンプだしてくれます。たとえばYoung領域使いすぎで昇格してしまうようなオブジェクトを探すときにこのオプション使うと大活躍してくれます。 このオプションは普通のオプションと違うので例によって-XX:+...で使います。こんな感じです。

  • Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ

    前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy

    Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ
  • とあるアプリの開発運用(トラブルシュート)

    SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014Nov Matake

    とあるアプリの開発運用(トラブルシュート)
  • VMWareがクソ重くて殺したくなる時に読むべきもの - いつまでもブタだと思うなよ

    冗談抜きでキレそうになって、悪いのは林檎なんだけどWindowsXPとかいう何年も前のOSを動かすのにこんなにクソトロイのは何でだ。とディスクアクセスとか調べまくってたら何かゲストOSがHDDにアクセスしてないタイミングでもアクセスが発生しまくっている事を発見し、色々と検索した結果見つけたのが下記のテキスト。http://wizardbible.org/49/49.txt該当部分について、何かtxtとかそういうファイルなので消えてしまわないように転載しておく。しかし当にこの金床って人は凄い人だ。Blogなんかに何の確証もなく「この設定を.vmxにすりゃいいよ! ○○○ = "xxxx"」とか書いているだけの何の価値も無い情報でなく、自分の調査方法を合せて読みやすくまとめてくれている。こういう記事をブログに書いていきたいと思ったね。 x0xXx0xx0xXx0xx0xXx0xx0xXx0x

  • http://japan.internet.com/developer/20100402/26.html?rss

    t-tanaka
    t-tanaka 2010/04/03
    C++には最適化をしておきながらJavaはJITが使われないようにシナリオを作ってる点が極めて恣意的。
  • Firefox、メモリ、キャッシュ、SSD、RAMディスク

    Core i7、DDR3メモリトリプルチャンネル6GB、Intel SSDWindows7。この環境なら、何かのアプリケーションが重くていらだつことはもうないだろうと思っていたあの頃。 SSDの読み込みの速さによる、Windows自体の起動の速さ、アプリケーションの起動の速さにも慣れ、残ったのはFirefoxの動作の重さ…。 まさかWebブラウジングするだけの処理がここまで重いとは…。前の環境で重かった画像処理は快適になったのに、なぜブラウザがここまで重いのか…。 「FirefoxのAutoPagerizeが重かった」の後、ページ先読み用アドオンは「AutoPager :: Add-ons for Firefox」に変えていました。PCのスペックも上がったことで、再びAutoPagerizeに戻していたわけです。でも、やっぱり重い。Greasemonkey版やExtension版のAut

    Firefox、メモリ、キャッシュ、SSD、RAMディスク
  • Firefox高速化テクニック8 | エンタープライズ | マイコミジャーナル

    Firefox web browser - Faster, more secure & customizable LinuxLinksにおいてFirefox Tipsのタイトルのもと、Firefoxの高速化を実施するためのテクニックが紹介されている。設定をすることでFirefoxの性能を引き上げ、Google Chromeのように開発ペースの早いブラウザにも対応できると冒頭に説明がある。なお、紹介されているテクニックを試す前に、prefs.jpファイルに保存されている設定のバックアップをとることが推奨されている。紹介されているテクニックは次のとおり。 BleachBitを使う BleachBitをインストールして使う。BleachBitはキャッシュ、履歴データ、一時ファイル、不要な使われていないローカルファイル、ログ、クッキーなどのデータを削除するツール。Windows版とLinux版が提