Traditional Java profilers use either byte code instrumentation or sampling (taking stack traces at short intervals) to determine where time was spent. Both approaches add their own skews and oddities. Understanding the output of those profilers is an art of its own and requires quite some experience. Fortunately, Brendan Gregg, a performance engineer at Netflix, came up with flame graphs (see htt
Dockerコンテナ上でasync-profilerをJVMアプリケーションに掛けてみます。 async-profilerを使って flame graphを取得することで アプリケーションのボトルネックを調べてみましょう。 こんにちは。齋藤です。 今日は負荷試験の合間にブログを書いてみます。 前回やった async-profiler の記事 の続きで 今回はDocker コンテナ上で 動くJVMアプリケーションに対してprofilerを動かしてみます。 コンテナのOSはdebianです。 はじめに 今回はperformanceのメトリクスを取るために --privileged のパラメータを渡す必要があります。 Linux の perf eventを読みとる必要があるからです。 そのため、以下の形で特権モードで動かします。 なお、特権モードを有効にして本番稼働させるのは危険です。 十分に危
Performance has always been one of the top priorities of the Spring Engineering team, and we are continually monitoring and responding to changes and to feedback. Some fairly intense and precise work has been done recently (in the last 2-3 years) and this article is here to help you to find the results of that work and to learn how to measure and improve performance in your own applications. The h
JVM Profiler: An Open Source Tool for Tracing Distributed JVM Applications at Scale Computing frameworks like Apache Spark have been widely adopted to build large-scale data applications. For Uber, data is at the heart of strategic decision-making and product development. To help us better leverage this data, we manage massive deployments of Spark across our global engineering offices. While Spark
200,000 Req/sec をさばく広告入札システムを支えるパフォーマンスチューニング術 #jjug_ccc #ccc_g6 JJUG CCC 2018 Fall で発表したスライドです。 秒間20万リクエストをさばくWeb広告入札システム "Logicad" 開発におけるパフォーマンスチューニング術を紹介します。 私たちが日々観ているWebサイトの広告枠。それは、ページビューごとに広告を表示する権利がオークションにかけられ、自動入札によって枠の買い付けが行われ、入札額の最も高かった入札者の広告だけが表示される、という世界です。国内外の各社が最適な広告をベストな金額で入札・表示するため、日々アルゴリズムの改良やデータセットの変更などを繰り広げており、まさに技術者たちの闘いの世界と言えましょう。私たちも日々様々なコードの追加をしています。一方、そのオークションの開催期間はわずか100ミリ
Bytestacks A tool to turn the output of -XX:+TraceBytecodes (a JDK debug-only feature to print every bytecode executed by the interpreter) into a simple stack format, and a script to turn that into flame graphs showing what happened during program execution, bytecode-by-bytecode: Who/what is this for? This is a diagnostic tool I've developed and used to visualize what is going on at startup at a h
Slides and more info: http://www.codemesh.io/codemesh2015/richard-warburton Profilers are a useful tool for developers trying to find out performance bottlenecks in their application. Unfortunately the results of profiling can mislead developers. Don't worry - we’re here to help! This talk explains what's really going on when you use a sampling profiler, enabling you to understand where your appl
こんにちは、 @snuffkin です。 Acroquestでは、Elastic{ON}のような勉強会やカンファレンスに参加するだけでなく、社内向けの勉強会も開催しています。 新しい技術を調べて「使ってみた」的な発表をしたり、実際に開発の中で得られた知見を発表したり。 各自が得意分野で、様々なテーマで発表し、技術の研鑽を行っています。 私の場合、しばらく性能改善に取り組んでいたため、 その際に解決した問題からいくつか事例をフィードバックし、 性能問題を起こさないよう喚起しました。 10 performanceimprovements 性能改善10事例 from Acroquest Technology www.slideshare.net スライドでも書きましたが、特に大量に繰り返し実行される処理では、性能を意識した実装をしないと問題になりがちです。 問題があちこちに散らばると性能が大きく
Java – the most common programming language, it is not difficult to learn, so it is suitable for those who first approached the study of programming. Introduction Java course is designed for those who are just starting their way in the IT industry and have no idea about the basics of programming. During the course, students will learn to create Java applications and gain an understanding of OOP pr
Google グループでは、オンライン フォーラムやメール ベースのグループを作成したり、こうしたフォーラムやグループに参加したりすることで、大勢のユーザーと情報の共有やディスカッションを行うことができます。
Red Hat (JBoss) - EAP Core Team Former contractor for Apple Inc Author - Netty in Action Apache Software Foundation Member Netty / Vert.x Core-Developer and all things NIO Java and Scala Twitter: @normanmaurer Github: https://github.com/normanmaurer As always, only optimize if you really need! 1000 concurrent connections != high-scale If you only need to handle a few hundred connections use Block
本ブログの読者の皆様方におかれましては、JavaのArrayListとLinkedListの 実装の違いにより性能に差があることは、当然のように熟知のことと存じあげます。 しかし! 実際にいかほどの差があるのか、それを数値で説明できるという方はどれほどいらっしゃるでしょうか。 いきなり丁寧語の煽りでスタートしました @cero_t です。 そう、今日のテーマはマイクロベンチマークです。 たとえば、 文字列を + で結合すると遅い。 ArrayListの初期化時にはサイズを指定したほうが良い。 ArrayListはループ処理が得意、LinkedListは途中の追加が得意。 など、よくあるパフォーマンスのプラクティスについては既に知っているという方も多いと思うのですが 実際に何倍ぐらいの差なのか(どれぐらいのオーダーの差なのか)を数値で話すことができるという方は、 あまり多くないように思います
この他にも "サービスを受けるのを待つ人が,キューの中に立っている平均時間はどれくらいか?" といったような疑問に,Littleの法則で答をだすといった内容のゲームは,他にもたくさんあります。 図1. Littleの法則 同じようにLittleの法則は,スレッドプールサイズの決定にも使うことができます。私たちがしなければならないのは,リクエストの到着率と,サービスに必要な平均時間を測定することです。そうすれば,これらの値をLittleの法則に挿入して,システムの平均要求数が計算されます。その数値がスレッドプールのサイズよりも小さければ,その結果に従ってプールのサイズを小さくすることが可能なのです。逆に計算結果がスレッドプールのサイズよりも大きい時には,問題はもう少し複雑になります。 実行中のリクエストより待ち状態のリクエストの数が多い場合,まず最初に判断しなければならないのは,もっと大きな
The Java SE 7 release contains an important enhancement for multithreaded custom class loaders. In previous releases, certain types of custom class loaders were prone to deadlock. The Java SE 7 release modifies the locking mechanism to avoid deadlock. Background The function of a java.lang.ClassLoader is to locate the bytecode for a particular class, then transform that bytecode into a usable clas
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く