SlideShare uma empresa Scribd logo
1 de 19
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
パフォーマンス ボトルネック
国内あるある事例
タクトシステムズ株式会社
ソリューション事業部
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
弊社について
•タクトシステムズ株式会社
– 1986年設立 社員数140名
– 独立系SIerとして顧客要望に合わせたシステムを構築
– dynaTraceの国内第1号販売代理店
– ユーザとして実際にdynaTraceを利用することで
発見した事例をより多くの皆様に伝えたい→本発表に至る
– JJUGの鈴木会長にご提案し、お使い頂いております
1
+
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
ボトルネックとは
•直訳すると 「瓶(びん)の首」
•最も流れが滞る箇所
•システムのパフォーマンスについてのボトルネックとは、
ある処理の実行時間のうち、1番時間がかかっている箇所
特徴
•ボトルネック以外の箇所を改善しても効果が薄い
•ボトルネックは移動する
– ボトルネックを改善することで、その箇所はボトルネックではなくなり、
新たな箇所がボトルネックとなる
2
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
ボトルネックの種類
•プログラム視点のボトルネック
– 大きな一つの処理がある
– 経験とカンである程度予測できる
→システムの複雑化により特定が困難に
– SQL が原因のケースがよくある
•トランザクション視点のボトルネック
– 大量の処理がある
– 従来の観点・手法では特定が困難
– ループ誤り、非効率なロジック
3
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例紹介
•dynaTraceにより発見した以下事例をご紹介
1. DBコネクション(プーリング未設定)
2. Synchronizedによる排他処理
3. 大量のSQL実行
4. 文字列結合
5. Proxy設定のトラブル<番外編>
4
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例1. DBコネクション(プーリング未設定)
5
DBサーバ
コネクション
プール
org.apache.commo
ns.dbcp.BasicDa
taSource
getConnection()
org.springframewor
k.jdbc.datasource.
DriverManager
DataSource
getConnection()
(デフォルト)
プーリングなし プーリングあり
毎回新しくコネクションを張り、
ボトルネックとなっていた
○×
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例1. DBコネクション(プーリング未設定)
6
種類 プログラム視点のボトルネック
要因 I/O
内容 SpringフレームワークのDBコネクション設定をデ
フォルトのまま使用していたため、コネクション
プールを使用しない動作となっていた。
対応 コネクションプールを使用する設定へ変更した。
原因 フレームワークの設定を全て把握することは難し
い。とりあえずデフォルトで動かしていた。
発見難易度:中 DB接続周りのログは、確認しやすいが、
思い込みによって、コネクションプーリングを利用
していないことに気付かない場合がある。
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例2. Synchronizedによる排他処理
7
スレッド1
・・・
マスタデータ
取得処理
Synchronized
Synchronized
スレッド2 スレッド3
Synchronized
待ち
待ち
×
×
×
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例2. Synchronizedによる排他処理
8
種類 プログラム視点のボトルネック
要因 同期待ち
内容 ログイン時の処理でSynchronizedによる排他をか
けたところ、同時アクセスで同期待ちが大量発生。
対応 処理タイミングをログイン時からアプリケーション
起動時に変更した。
原因 スレッドセーフを実現するために、安易に
Synchronizedを使用していた。
排他をかける範囲や必要性を吟味すべき。
発見難易度:高 JMXよりスレッドの状態、スレッドのブロック時間、
さらにはスタックトレースを何度も繰り返し取得し
分析する必要がある。
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例2. Synchronizedによる排他処理
9
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例3. 大量のSQL実行
10
DBサーバ
アプリケーション
サーバ
Insert文
1回の実行時間は短いが…
繰り返すと
ボトルネックに…
×
○
executeBatch
で格段に早く
DBサーバ
アプリケーション
サーバ
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例3. 大量のSQL実行
11
種類 トランザクション視点のボトルネック
要因 I/O
内容 大量のデータ登録処理を、データ1件ずつInsert
文を発行していた。結果、30秒以上の処理時間と
なった。
対応 JDBCのバッチ更新機能に変更した。結果、0.3秒
に短縮された。
原因 大量のデータ登録を想定せずに実装した。
テストは少量データで実施し、パフォーマンスの
問題として顕在化しなかった。
発見難易度:中 Insert文1回の実行時間が短く、リソース(CPU, メ
モリ)の消費も低いため、サーバ視点で見ても問
題が見つからない。
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例4. 文字列結合
12
String str = "";
for (int i = 0; i < 1000000; i++) {
str += i;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000000; i++) {
sb.append(i);
}
String str = sb.toString();
String str = "";
for (int i = 0; i < 1000000; i++) {
str = new StringBuilder().append(str).append(i).toString();
}
(JDK1.5以上の場合)
実質的には…
インスタンス
の生成を
1000000回
繰り返す…
×
○ 上に比べて、
数百倍速い
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例4. 文字列結合
13
種類 トランザクション視点のボトルネック
要因 CPU
内容 大量の文字列結合に「+」を使用したところ、スト
リングバッファのnewとappendが発生し、配列コ
ピーでCPU負荷が高くなった。
対応 StringBuilder appendに書き換えることで解消。
原因 記述の容易さや可読性の良さにより、「+」を使用
しがち。 StringBuilder appendとの動作や性能の
違いを意識しているプログラマーばかりではない。
発見難易度:中 目視によるコードレビューでは限界がある。
有識者であれば発見は早いが、そうでなければ
ログを出力して分析する必要あり。
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
クライアント
ブラウザ
事例5. Proxy設定のトラブル<番外編>
14
アプリケーション
サーバ
Proxy
サーバ
リダイ
レクト
エラー
×
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
事例5. Proxy設定のトラブル<番外編>
15
要因 ネットワーク
内容 HTMLからリダイレクトを繰り返して実行する処理
で、ネットワーク上のProxyサーバが弾いていた。
対応 細かく分けていた処理をまとめ、リダイレクトの回
数を減らした。
原因 Proxyサーバの挙動について認識していなかった。
発見難易度:高 インフラに精通していないと特定は困難。
アプリケーション側のログを分析しても原因不明。
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
まとめ
•ボトルネックの種類
– プログラム視点のボトルネック
– トランザクション視点のボトルネック
•ボトルネックの特定は、困難になる一方
– 複雑化するシステム構成
– 従来の観点・手法では、限界
•dynaTraceにより短時間でボトルネックを特定できた
16
クラウド
Webサービス モバイル
仮想化
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
最後に・・・
17
内容
現在タクトシステムズでは、本日ご紹介した『dynaTrace』を活用し
【パフォーマンスボトルネック調査サービス】を実施しております。
本セミナにご参加頂きました皆様には特別価格(通常の50%)5万円にて
ご提供いたします(6月末までの期間限定)。
※詳細は配布資料の最終ページをご確認ください。
特徴
早い! dynaTrace導入から2時間以内にボトルネックを特定いたします。
安い! 成功報酬型でボトルネックを特定できない場合は無料です。
簡単! 対象システムの設定変更やログ出力の追加などは不要です。
皆様もdynaTraceの効果を体験しませんか?
パフォーマンスボトルネック調査サービスを提供中
Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow
18
お問合せ先 : タクトシステムズ株式会社
〒111-0051 東京都台東区蔵前3-1-10 蔵前セントラルビル2F
ソリューション事業部 (03)5820-8150
〒532-0003 大阪市淀川区宮原4-5-36 セントラル新大阪ビル7F
ソリューション営業部 (06)6399-1700
http://www.takt.co.jp/
Please “CON ” us.Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow

Mais conteúdo relacionado

Mais procurados

ナレッジグラフとオントロジー
ナレッジグラフとオントロジーナレッジグラフとオントロジー
ナレッジグラフとオントロジーUniversity of Tsukuba
 
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツールProphet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツールhoxo_m
 
ビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionTetsutaro Watanabe
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAmazon Web Services Japan
 
PowerApps 初心者の館?
PowerApps 初心者の館?PowerApps 初心者の館?
PowerApps 初心者の館?Teruchika Yamada
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOpsHiromasa Oka
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)Satoshi Hara
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAmazon Web Services Japan
 
The concept of mini hardening
The concept of  mini hardeningThe concept of  mini hardening
The concept of mini hardeningMasahiro Tabata
 
機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021Fuyuki Ishikawa
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)株式会社MonotaRO Tech Team
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOpsMariOhbuchi
 
自分のサービスで生きていく
自分のサービスで生きていく自分のサービスで生きていく
自分のサービスで生きていく慎吾 入江
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Kentaro Yoshida
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)NTT DATA Technology & Innovation
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 

Mais procurados (20)

ナレッジグラフとオントロジー
ナレッジグラフとオントロジーナレッジグラフとオントロジー
ナレッジグラフとオントロジー
 
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツールProphet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツール
 
ビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
PowerApps 初心者の館?
PowerApps 初心者の館?PowerApps 初心者の館?
PowerApps 初心者の館?
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOps
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
 
The concept of mini hardening
The concept of  mini hardeningThe concept of  mini hardening
The concept of mini hardening
 
機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021
 
情シス必要論 re:Birth
情シス必要論 re:Birth 情シス必要論 re:Birth
情シス必要論 re:Birth
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
自分のサービスで生きていく
自分のサービスで生きていく自分のサービスで生きていく
自分のサービスで生きていく
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
Fluentd, Digdag, Embulkを用いたデータ分析基盤の始め方
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 

Semelhante a パフォーマンス ボトルネック 国内あるある事例

IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)
人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)
人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座SORACOM,INC
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術Unity Technologies Japan K.K.
 
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-Unity Technologies Japan K.K.
 
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一Insight Technology, Inc.
 
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...Insight Technology, Inc.
 
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro YokoyamaInsight Technology, Inc.
 
データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』
データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』
データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』The Japan DataScientist Society
 
エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習Preferred Networks
 
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...whywaita
 
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方Hisahiko Shiraishi
 
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也Insight Technology, Inc.
 
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイントNaoki Ohsugi
 
.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデートTomomitsuKusaba
 
CNNチュートリアル
CNNチュートリアルCNNチュートリアル
CNNチュートリアルIkuro Sato
 
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスPydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスShoichi Taguchi
 
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社Game Tools & Middleware Forum
 

Semelhante a パフォーマンス ボトルネック 国内あるある事例 (20)

IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)
人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)
人と機械の協働によりデータ分析作業の効率化を目指す協働型機械学習技術(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
 
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
 
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一 [db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ!  by 株式会社日立製作所 村上順一
[db tech showcase Tokyo 2014] D25: 今を分析する日立の「CEP」、知るなら今でしょ! by 株式会社日立製作所 村上順一
 
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
[db analytics showcase Sapporo 2017] B27:世界最速のAnalytic DBはHadoopの夢を見るか by 株式会...
 
Ladder of cqrs+es
Ladder of cqrs+esLadder of cqrs+es
Ladder of cqrs+es
 
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
 
データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』
データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』
データサイエンティスト協会 木曜勉強会 #09 『意志の力が拓くシステム~最適化の適用事例から見たデータ活用システムの現在と未来~』
 
エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習エッジヘビーコンピューティングと機械学習
エッジヘビーコンピューティングと機械学習
 
pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)
 
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
 
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
ゲーム事業×データ分析 ドリコムにおける組織と仕事の組み立て方
 
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
 
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
 
.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート
 
CNNチュートリアル
CNNチュートリアルCNNチュートリアル
CNNチュートリアル
 
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセスPydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
Pydata_リクルートにおけるbanditアルゴリズム_実装前までのプロセス
 
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
 

Mais de 日本Javaユーザーグループ

Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3日本Javaユーザーグループ
 
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンドパフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド日本Javaユーザーグループ
 
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組みJJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み日本Javaユーザーグループ
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3日本Javaユーザーグループ
 

Mais de 日本Javaユーザーグループ (12)

日本Javaユーザーグループ 2018年度 定期総会
日本Javaユーザーグループ 2018年度 定期総会日本Javaユーザーグループ 2018年度 定期総会
日本Javaユーザーグループ 2018年度 定期総会
 
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug 日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
 
日本Javaグループ2016年定期総会 #jjug #ccc_soukai
日本Javaグループ2016年定期総会 #jjug #ccc_soukai日本Javaグループ2016年定期総会 #jjug #ccc_soukai
日本Javaグループ2016年定期総会 #jjug #ccc_soukai
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
 
JCache Using JCache
JCache Using JCacheJCache Using JCache
JCache Using JCache
 
JJUG CCC 2015 Spring 総会資料
JJUG CCC 2015 Spring 総会資料JJUG CCC 2015 Spring 総会資料
JJUG CCC 2015 Spring 総会資料
 
Jjug ccc spring_#ccc_r55
Jjug ccc spring_#ccc_r55Jjug ccc spring_#ccc_r55
Jjug ccc spring_#ccc_r55
 
JJUG CCC 2014 Spring 定期総会
JJUG CCC 2014 Spring 定期総会JJUG CCC 2014 Spring 定期総会
JJUG CCC 2014 Spring 定期総会
 
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンドパフォーマンス管理最前線 米国大規模システムにおける最新トレンド
パフォーマンス管理最前線 米国大規模システムにおける最新トレンド
 
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組みJJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
JJavaプログラム実行の仕組みと、高速・安定動作に向けた取り組み
 
JJUG CCC 2013 Spring 定期総会資料
JJUG CCC 2013 Spring 定期総会資料JJUG CCC 2013 Spring 定期総会資料
JJUG CCC 2013 Spring 定期総会資料
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
 

パフォーマンス ボトルネック 国内あるある事例

  • 1. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow パフォーマンス ボトルネック 国内あるある事例 タクトシステムズ株式会社 ソリューション事業部
  • 2. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 弊社について •タクトシステムズ株式会社 – 1986年設立 社員数140名 – 独立系SIerとして顧客要望に合わせたシステムを構築 – dynaTraceの国内第1号販売代理店 – ユーザとして実際にdynaTraceを利用することで 発見した事例をより多くの皆様に伝えたい→本発表に至る – JJUGの鈴木会長にご提案し、お使い頂いております 1 +
  • 3. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow ボトルネックとは •直訳すると 「瓶(びん)の首」 •最も流れが滞る箇所 •システムのパフォーマンスについてのボトルネックとは、 ある処理の実行時間のうち、1番時間がかかっている箇所 特徴 •ボトルネック以外の箇所を改善しても効果が薄い •ボトルネックは移動する – ボトルネックを改善することで、その箇所はボトルネックではなくなり、 新たな箇所がボトルネックとなる 2
  • 4. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow ボトルネックの種類 •プログラム視点のボトルネック – 大きな一つの処理がある – 経験とカンである程度予測できる →システムの複雑化により特定が困難に – SQL が原因のケースがよくある •トランザクション視点のボトルネック – 大量の処理がある – 従来の観点・手法では特定が困難 – ループ誤り、非効率なロジック 3
  • 5. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例紹介 •dynaTraceにより発見した以下事例をご紹介 1. DBコネクション(プーリング未設定) 2. Synchronizedによる排他処理 3. 大量のSQL実行 4. 文字列結合 5. Proxy設定のトラブル<番外編> 4
  • 6. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例1. DBコネクション(プーリング未設定) 5 DBサーバ コネクション プール org.apache.commo ns.dbcp.BasicDa taSource getConnection() org.springframewor k.jdbc.datasource. DriverManager DataSource getConnection() (デフォルト) プーリングなし プーリングあり 毎回新しくコネクションを張り、 ボトルネックとなっていた ○×
  • 7. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例1. DBコネクション(プーリング未設定) 6 種類 プログラム視点のボトルネック 要因 I/O 内容 SpringフレームワークのDBコネクション設定をデ フォルトのまま使用していたため、コネクション プールを使用しない動作となっていた。 対応 コネクションプールを使用する設定へ変更した。 原因 フレームワークの設定を全て把握することは難し い。とりあえずデフォルトで動かしていた。 発見難易度:中 DB接続周りのログは、確認しやすいが、 思い込みによって、コネクションプーリングを利用 していないことに気付かない場合がある。
  • 8. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例2. Synchronizedによる排他処理 7 スレッド1 ・・・ マスタデータ 取得処理 Synchronized Synchronized スレッド2 スレッド3 Synchronized 待ち 待ち × × ×
  • 9. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例2. Synchronizedによる排他処理 8 種類 プログラム視点のボトルネック 要因 同期待ち 内容 ログイン時の処理でSynchronizedによる排他をか けたところ、同時アクセスで同期待ちが大量発生。 対応 処理タイミングをログイン時からアプリケーション 起動時に変更した。 原因 スレッドセーフを実現するために、安易に Synchronizedを使用していた。 排他をかける範囲や必要性を吟味すべき。 発見難易度:高 JMXよりスレッドの状態、スレッドのブロック時間、 さらにはスタックトレースを何度も繰り返し取得し 分析する必要がある。
  • 10. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例2. Synchronizedによる排他処理 9
  • 11. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例3. 大量のSQL実行 10 DBサーバ アプリケーション サーバ Insert文 1回の実行時間は短いが… 繰り返すと ボトルネックに… × ○ executeBatch で格段に早く DBサーバ アプリケーション サーバ
  • 12. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例3. 大量のSQL実行 11 種類 トランザクション視点のボトルネック 要因 I/O 内容 大量のデータ登録処理を、データ1件ずつInsert 文を発行していた。結果、30秒以上の処理時間と なった。 対応 JDBCのバッチ更新機能に変更した。結果、0.3秒 に短縮された。 原因 大量のデータ登録を想定せずに実装した。 テストは少量データで実施し、パフォーマンスの 問題として顕在化しなかった。 発見難易度:中 Insert文1回の実行時間が短く、リソース(CPU, メ モリ)の消費も低いため、サーバ視点で見ても問 題が見つからない。
  • 13. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例4. 文字列結合 12 String str = ""; for (int i = 0; i < 1000000; i++) { str += i; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < 1000000; i++) { sb.append(i); } String str = sb.toString(); String str = ""; for (int i = 0; i < 1000000; i++) { str = new StringBuilder().append(str).append(i).toString(); } (JDK1.5以上の場合) 実質的には… インスタンス の生成を 1000000回 繰り返す… × ○ 上に比べて、 数百倍速い
  • 14. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例4. 文字列結合 13 種類 トランザクション視点のボトルネック 要因 CPU 内容 大量の文字列結合に「+」を使用したところ、スト リングバッファのnewとappendが発生し、配列コ ピーでCPU負荷が高くなった。 対応 StringBuilder appendに書き換えることで解消。 原因 記述の容易さや可読性の良さにより、「+」を使用 しがち。 StringBuilder appendとの動作や性能の 違いを意識しているプログラマーばかりではない。 発見難易度:中 目視によるコードレビューでは限界がある。 有識者であれば発見は早いが、そうでなければ ログを出力して分析する必要あり。
  • 15. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow クライアント ブラウザ 事例5. Proxy設定のトラブル<番外編> 14 アプリケーション サーバ Proxy サーバ リダイ レクト エラー ×
  • 16. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 事例5. Proxy設定のトラブル<番外編> 15 要因 ネットワーク 内容 HTMLからリダイレクトを繰り返して実行する処理 で、ネットワーク上のProxyサーバが弾いていた。 対応 細かく分けていた処理をまとめ、リダイレクトの回 数を減らした。 原因 Proxyサーバの挙動について認識していなかった。 発見難易度:高 インフラに精通していないと特定は困難。 アプリケーション側のログを分析しても原因不明。
  • 17. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow まとめ •ボトルネックの種類 – プログラム視点のボトルネック – トランザクション視点のボトルネック •ボトルネックの特定は、困難になる一方 – 複雑化するシステム構成 – 従来の観点・手法では、限界 •dynaTraceにより短時間でボトルネックを特定できた 16 クラウド Webサービス モバイル 仮想化
  • 18. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 最後に・・・ 17 内容 現在タクトシステムズでは、本日ご紹介した『dynaTrace』を活用し 【パフォーマンスボトルネック調査サービス】を実施しております。 本セミナにご参加頂きました皆様には特別価格(通常の50%)5万円にて ご提供いたします(6月末までの期間限定)。 ※詳細は配布資料の最終ページをご確認ください。 特徴 早い! dynaTrace導入から2時間以内にボトルネックを特定いたします。 安い! 成功報酬型でボトルネックを特定できない場合は無料です。 簡単! 対象システムの設定変更やログ出力の追加などは不要です。 皆様もdynaTraceの効果を体験しませんか? パフォーマンスボトルネック調査サービスを提供中
  • 19. Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow 18 お問合せ先 : タクトシステムズ株式会社 〒111-0051 東京都台東区蔵前3-1-10 蔵前セントラルビル2F ソリューション事業部 (03)5820-8150 〒532-0003 大阪市淀川区宮原4-5-36 セントラル新大阪ビル7F ソリューション営業部 (06)6399-1700 http://www.takt.co.jp/ Please “CON ” us.Technology and Knowledge for TomorrowTechnology and Knowledge for Tomorrow