SlideShare a Scribd company logo
1 of 40
Download to read offline
Copyright © 2018 Growth xPartners, Inc.
この 作品 は クリエイティブ・コモンズ 表示 - 非営利 - 継承 4.0 国際 ライセンスの下に提供されています。
Confluence/Jira
パフォーマンスチューニングポイント
2018/2/2
グロースエクスパートナーズ(株)
大中浩行
第26回 Tokyo Atlassian ユーザーグループ
Copyright © 2018 Growth xPartners, Inc.
• 大中浩行(Ohanaka,Hiroyuki)
• グロースエクスパートナーズ(株)
アーキテクチャーソリューション部
テクニカルリード
• Atlassian Certified System Administrator
1
Copyright © 2018 Growth xPartners, Inc.
弊社について
• グロースエクスパートナーズ株式会社
• 所在 東京都新宿区西新宿 新宿野村ビル24・25階
• 2010年よりパートナー(現ソリューションパートナー)
• http://www.gxp.co.jp/atlassian/
• https://twitter.com/GxPAtlassian/
2
Copyright © 2018 Growth xPartners, Inc.
今日お話しすること
• サイジングについて
• Java VMのパラメーターについて
• 接続数関連のパラメーターについて
• トラブルシューティングについて
3
Copyright © 2018 Growth xPartners, Inc.
サイジングについて
Java VMのパラメーターについて
接続数関連のパラメーターについて
トラブルシューティングについて
2018/2/2
4
Copyright © 2018 Growth xPartners, Inc.
その前に、チューニングについての原則
• アトラシアン製品は、Apache Tomcat(Tomcat)上に
アプリケーションがデプロイされて動作しています。
(Bitbucket Serverを除く)
• パフォーマンスを考える上では、Javaで書かれたWeb
アプリケーションをチューニングする上での原則を適
用しながら進めていくことになります。
5
Copyright © 2018 Growth xPartners, Inc.
環境について
• Jira Software(以下Jira) 7.6.3 + Confluence 6.7.0
• Server(オンプレミス) 版
• CentOS Linux 7 1708 (64bit)
• PostgreSQL 9.6.6
6
Copyright © 2018 Growth xPartners, Inc.
• 弊社の顧客でパフォーマンスチューニングを行った時
の事例がベースです。
• Jira: 130プロジェクト 約90000チケット
(200~500チケット/日)
• Confluence: 240スペース 約20万ページ
(300~500ページ/日)
• 約1200ユーザー
7
Copyright © 2018 Growth xPartners, Inc.
Jiraのサイジング
• Jira Sizing Guide
⁃ https://confluence.atlassian.com/enterprise/jira-sizing-
guide-461504623.html
8
Copyright © 2018 Growth xPartners, Inc.
Confluenceのサイジング
• Server Hardware Requirements Guide
⁃ https://confluence.atlassian.com/doc/server-hardware-
requirements-guide-30736403.html
• 同時編集機能が有効かどうかで、必要となるリソース
が変化することに注意
9
Copyright © 2018 Growth xPartners, Inc.
現場感覚でのサイジングの目安
• うまくいくチーム開発のツール戦略
⁃ SoftWare Design連載(リックソフト様)
⁃ 第21回 Atlassian製品を最適に運用するためのポイント(前
編):うまくいくチーム開発のツール戦略
⁃ http://gihyo.jp/dev/serial/01/teamdev-
toolstrategy/0021
10
Copyright © 2018 Growth xPartners, Inc.
リソースの割当について
• 原則は、「一つの仮想マシン(VM)に一つのアプリケー
ション」
• サイジングおよび、運用する上で考える要素を単純に
するため
• 障害が発生した場合の影響範囲を限定するため
11
Copyright © 2018 Growth xPartners, Inc.
• 個別の環境における最適値を求めるには、計測が不可
欠
• ユーザー数や使用頻度の増減によっても、必要なスペ
ックは変化してくる
12
Copyright © 2018 Growth xPartners, Inc.
モニタリングしましょう(図はMackerel)
13
Copyright © 2018 Growth xPartners, Inc.
リソースの割当について(続き)
• ディスクは拡張可能な構成にすること
⁃ 添付ファイルは増えることがあっても減ることがないため
⁃ 例)
➢ Elastic Volumn(AWS EBS)
• https://aws.amazon.com/jp/blogs/news/amazon-ebs-update-new-elastic-
volumes-change-everything/
➢ LVM
14
Copyright © 2018 Growth xPartners, Inc.
サイジングについて
Java VMのパラメーターについて
接続数関連のパラメーターについて
トラブルシューティングについて
2018/2/2
15
Copyright © 2018 Growth xPartners, Inc.
JVMについて
• システム要件的にはJDKでもJREでも動作しますが、
JDKを使って起動することを推奨します
• JREにはJVMの運用系のコマンド(jstat/jstack/jps等)
が同梱されておらず、これらが性能の計測やトラブル
シューティングで必要になる場合があるためです
16
Copyright © 2018 Growth xPartners, Inc.
JVMのパラーメーターについて
• ヒープはアプリケーションの規模によって調整する
(インストールディレクトリ)
(インストールディレクトリ)/bin/setenv.shで設定
17
Copyright © 2018 Growth xPartners, Inc.
setenv.sh
• Jiraの場合
• Confluenceの場合
18
JVM_MINIMUM_MEMORY="1384m"
JVM_MAXIMUM_MEMORY="1768m"
CATALINA_OPTS="-Xms2048m -Xmx2048m -
XX:+UseG1GC ${CATALINA_OPTS}"
Copyright © 2018 Growth xPartners, Inc.
• パーマネント領域は(-XX:MaxPermSize)はJava8で廃
止されました(Confluence5.8/JIRA7.0以降)
• Java8から導入されたメタスペース(-
XX:MaxMetaspaceSize)のパラメーターは指定しない
で、OSのネイティブ領域の管理に任せることを推奨し
ます。(1アプリケーション1VMが前提)
19
Copyright © 2018 Growth xPartners, Inc.
サイジングについて
Java VMのパラメーターについて
接続数関連のパラメーターについて
トラブルシューティングについて
2018/2/2
20
Copyright © 2018 Growth xPartners, Inc.
スレッドプールのチューニング
• (インストールディレクトリー)/conf/server.xml
• 同時接続数が増えた場合に調整が必要
21
<Connector port="8080"
maxThreads="150"
minSpareThreads="25"
connectionTimeout="20000"
Copyright © 2018 Growth xPartners, Inc.
maxThreadsの調整にあたって考慮するポイント
• リバースプロキシーのTCPコネクションプール
• OSのプロセス数制限(ulimit -u)
• Jira/Confluenceのデータベースへのコネクションプ
ーリングの設定数とのバランス
⁃ 同時接続数を増やしても、データベースへの同時接続が可能な
数値を調整しないままだとデータベースに接続するところに頭
打ちになるため
22
Copyright © 2018 Growth xPartners, Inc.
Jiraの場合(dbcofnig.xml)
23
<jira-database-config>
<name>defaultDS</name>
<delegator-name>default</delegator-name>
<database-type>postgres72</database-type>
<schema-name>public</schema-name>
<jdbc-datasource>
(略)
<pool-min-size>20</pool-min-size>
<pool-max-size>20</pool-max-size>
<pool-max-wait>30000</pool-max-wait>
Copyright © 2018 Growth xPartners, Inc.
Confluenceの場合(confluence.cfg.xml)
<confluence-configuration>
(中略)
<property
name="hibernate.c3p0.max_size">60</property>
(以下略)
24
Copyright © 2018 Growth xPartners, Inc.
maxThreadsとデータベース接続数の関係の目安
• アトラシアン社ナレッジベース「Confluence slows
and times out during periods of high load due to
database connection pool」に記載があります。
⁃ https://confluence.atlassian.com/confkb/confluence-
slows-and-times-out-during-periods-of-high-load-due-
to-database-connection-pool-146407630.html
25
Copyright © 2018 Growth xPartners, Inc.
Optimize the database connection pool. This
defines the maximum number of connections in the
database pool. This number should be at least 10
counts higher or 25% higher (whichever value is
greater) than the number of HTTP threads will be
used in peak time (see below for setting HTTP
threads.)
26
Copyright © 2018 Growth xPartners, Inc.
Confluence6.7のヘルスチェックの新機能
Confluence6.7のリリースノートから(弊社訳)
私たちは Confluence サイトの問題を警告するためのヘ
ルスチェックを改善し続けています。
今回のリリースではアップグレード後のチェックを追加
しました。
HTTPリクエスト用のスレッドプールサイズとデータベ
ースコネクションプールサイズの関係が適切かどうかを
診断し、問題があれば警告します。
27
Copyright © 2018 Growth xPartners, Inc.
confluence.logのログ出力例
28
2018-01-31 17:34:41,920 WARN [localhost-startStop-1]
[confluence.impl.health.DefaultHealthCheckRunner] logEvent
Your database connection pool allows 60 connections, which is
not enough to support the 80 HTTP threads in your Tomcat
configuration. Either increase the pool size to at least 100
connections or reduce the maximum number of HTTP threads to
48 or fewer.
Copyright © 2018 Growth xPartners, Inc.
では、データベースへの同時接続数を増やせばいいのか
というと
データベース側で受け付けることができる最大接続数は
、データベース側の設定に依存する(例はPostgreSQLの
postgresql.confの場合)
29
max_connections = 100 # (change requires restart)
Copyright © 2018 Growth xPartners, Inc.
• httpの同時接続数と、アプリケーション上のコネクシ
ョンプーリングの最大接続数と、データベースサーバ
ー上の最大接続数と、それぞれのパラメーターのバラ
ンスを取りながら、チューニングすることが求められ
ます。
30
Copyright © 2018 Growth xPartners, Inc.
サイジングについて
Java VMのパラメーターについて
接続数関連のパラメーターについて
トラブルシューティングについて
2018/2/2
31
Copyright © 2018 Growth xPartners, Inc.
トラブルシューティング
パフォーマンス上の問題が発生し、調査を行う際、スレ
ッドダンプの取得が必要になる場合があります。
スレッドダンプとは、Javaプロセス上で動作するJavaス
レッド上でのスタックトレースを出力するもので、
JavaVM内のスレッドの動作の状況を調査するのに用い
ます。
32
Copyright © 2018 Growth xPartners, Inc.
Jira/Confluenceの管理画面で取得するSupport Zip内に
スレッドダンプの出力は含まれていますが、管理画面へ
のアクセスが出来ない場合はOSのシェル上からスレッ
ドダンプの取得を行います。
33
Copyright © 2018 Growth xPartners, Inc.
スレッドダンプの取得方法
• jpsコマンドでアプリケーションのPIDを特定する
34
$sudo /usr/java/default/bin/jps -v |grep jira
1278 Bootstrap -
Djava.util.logging.config.file=/opt/atlassian/jira/cur
rent/conf/logging.properties -
Djava.util.logging.manager=org.apache.juli.ClassLo
aderLogManager -Xms384m -Xmx768m(略)
Copyright © 2018 Growth xPartners, Inc.
スレッドダンプの取得方法
jstackコマンドでスレッドダンプを出力する
動作が停止しているスレッドを特定するため、複数回繰
り返して出力してください
35
$ sudo /usr/java/default/bin/jstack -F 1278
Copyright © 2018 Growth xPartners, Inc.
スレッドダンプの出力
Attaching to process ID 1278, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.152-b16
Deadlock Detection:
No deadlocks found.
Thread 5747: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=2039 (Compiled
frame)
- java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100, line=1088 (Compiled
frame)
- java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26,
line=1134 (Interpreted frame)
- java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
- java.lang.Thread.run() @bci=11, line=748 (Interpreted frame)
36
Copyright © 2018 Growth xPartners, Inc.
まとめ
2018/2/2
37
Copyright © 2018 Growth xPartners, Inc.
• Confluence/Jiraのパフォーマンスチューニングは、
JavaのWebアプリケーションのチューニングのセオリ
ーを適用していくことになります。
• それぞれのパラメーターのバランスをとりましょう
• 継続的な計測が重要です。
38
Copyright © 2018 Growth xPartners, Inc.
ありがとうございました!
http://www.gxp.co.jp/atlassian/
twitter: @GxPAtlassian
39

More Related Content

What's hot

Microsoft Azure Blockchain as a Service
Microsoft Azure Blockchain as a ServiceMicrosoft Azure Blockchain as a Service
Microsoft Azure Blockchain as a ServiceNeutrinoTokyo
 
ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素NISHIHARA Shota
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo dbYuji Isobe
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム信之 岩永
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法kazkiti
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Takuya Ueda
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
AWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめAWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめTrainocate Japan, Ltd.
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話Ryosuke Uchitate
 
AWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンス
AWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンスAWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンス
AWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンスAmazon Web Services Japan
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ信之 岩永
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 

What's hot (20)

Microsoft Azure Blockchain as a Service
Microsoft Azure Blockchain as a ServiceMicrosoft Azure Blockchain as a Service
Microsoft Azure Blockchain as a Service
 
ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素ITコミュニティと情報発信に共通する成長と貢献の要素
ITコミュニティと情報発信に共通する成長と貢献の要素
 
Consistent hash
Consistent hashConsistent hash
Consistent hash
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
Azure Arc 概要
Azure Arc 概要Azure Arc 概要
Azure Arc 概要
 
golang profiling の基礎
golang profiling の基礎golang profiling の基礎
golang profiling の基礎
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
AWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめAWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめ
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
AWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンス
AWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンスAWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンス
AWS Black Belt Techシリーズ リザーブドインスタンス & スポットインスタンス
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 

Similar to Confluence/Jira パフォーマンスチューニングポイント

開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリングAmazon Web Services Japan
 
Autonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションAutonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションオラクルエンジニア通信
 
共有、自動化、計測 - DevOps ツール考察 -
共有、自動化、計測 - DevOps ツール考察 -共有、自動化、計測 - DevOps ツール考察 -
共有、自動化、計測 - DevOps ツール考察 -Chie Sasaki
 
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬るDevelopers Summit
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発Amazon Web Services Japan
 
[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...
[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...
[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...Insight Technology, Inc.
 
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAmazon Web Services Japan
 
Abaqus利用を加速させる sFlexNavi WorkFlow
Abaqus利用を加速させる sFlexNavi WorkFlowAbaqus利用を加速させる sFlexNavi WorkFlow
Abaqus利用を加速させる sFlexNavi WorkFlowRescale Japan株式会社
 
2018年度新入社員研修実績紹介
2018年度新入社員研修実績紹介2018年度新入社員研修実績紹介
2018年度新入社員研修実績紹介CASAREAL, Inc.
 
分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)
分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)
分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)Ryusuke Ashiya
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container ServicesAmazon Web Services Japan
 
ニフティにおけるAtlassian製品のユーザー管理手法
ニフティにおけるAtlassian製品のユーザー管理手法ニフティにおけるAtlassian製品のユーザー管理手法
ニフティにおけるAtlassian製品のユーザー管理手法Takayuki Ishikawa
 

Similar to Confluence/Jira パフォーマンスチューニングポイント (20)

Atlassian Summit US 2017 #augj
Atlassian Summit US 2017 #augjAtlassian Summit US 2017 #augj
Atlassian Summit US 2017 #augj
 
開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング
 
Autonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションAutonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーション
 
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
 
共有、自動化、計測 - DevOps ツール考察 -
共有、自動化、計測 - DevOps ツール考察 -共有、自動化、計測 - DevOps ツール考察 -
共有、自動化、計測 - DevOps ツール考察 -
 
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...
[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...
[db tech showcase Tokyo 2018] #dbts2018 #C13 『IoT からクラウドで活用される Hybrid Data を高...
 
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
 
Atlassian Summit 2015でのDevOps関連の取り組みについて
Atlassian Summit 2015でのDevOps関連の取り組みについてAtlassian Summit 2015でのDevOps関連の取り組みについて
Atlassian Summit 2015でのDevOps関連の取り組みについて
 
CData Drivers HandsOn 20180326
CData Drivers HandsOn 20180326CData Drivers HandsOn 20180326
CData Drivers HandsOn 20180326
 
CData Drivers for PCA 概要
CData Drivers for PCA 概要CData Drivers for PCA 概要
CData Drivers for PCA 概要
 
Abaqus利用を加速させる sFlexNavi WorkFlow
Abaqus利用を加速させる sFlexNavi WorkFlowAbaqus利用を加速させる sFlexNavi WorkFlow
Abaqus利用を加速させる sFlexNavi WorkFlow
 
Bambooによる継続的デリバリー
Bambooによる継続的デリバリーBambooによる継続的デリバリー
Bambooによる継続的デリバリー
 
Innovation and Startups Today
Innovation and Startups TodayInnovation and Startups Today
Innovation and Startups Today
 
CData General Proposal
CData General ProposalCData General Proposal
CData General Proposal
 
2018年度新入社員研修実績紹介
2018年度新入社員研修実績紹介2018年度新入社員研修実績紹介
2018年度新入社員研修実績紹介
 
分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)
分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)
分析のモダナイズへのヒント:データ価値を最大化するビジュアル分析とエンタープライズ組織への展開 - 経営課題解決シンポジウム (2018/09/28)
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services
 
ニフティにおけるAtlassian製品のユーザー管理手法
ニフティにおけるAtlassian製品のユーザー管理手法ニフティにおけるAtlassian製品のユーザー管理手法
ニフティにおけるAtlassian製品のユーザー管理手法
 

More from グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.

「企業システムにおける意志決定とITサービス運営について」 ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~
「企業システムにおける意志決定とITサービス運営について」  ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~「企業システムにおける意志決定とITサービス運営について」  ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~
「企業システムにおける意志決定とITサービス運営について」 ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
 

More from グロースエクスパートナーズ株式会社/Growth xPartners Incorporated. (20)

[XP祭り2020]組織にはびこるなんちゃってスクラムからの脱却を目指して
[XP祭り2020]組織にはびこるなんちゃってスクラムからの脱却を目指して[XP祭り2020]組織にはびこるなんちゃってスクラムからの脱却を目指して
[XP祭り2020]組織にはびこるなんちゃってスクラムからの脱却を目指して
 
Bitbucket Pipelinesについて
Bitbucket PipelinesについてBitbucket Pipelinesについて
Bitbucket Pipelinesについて
 
開発チームの世代交代への取り組み
開発チームの世代交代への取り組み開発チームの世代交代への取り組み
開発チームの世代交代への取り組み
 
エンタープライズにおける開発ツールの導入と活用推進
エンタープライズにおける開発ツールの導入と活用推進エンタープライズにおける開発ツールの導入と活用推進
エンタープライズにおける開発ツールの導入と活用推進
 
エンタープライズにおける開発ツールの導入と活用推進
エンタープライズにおける開発ツールの導入と活用推進エンタープライズにおける開発ツールの導入と活用推進
エンタープライズにおける開発ツールの導入と活用推進
 
ソフトウェア品質向上の 変 2015江戸~今、改革のとき~ 20150204
ソフトウェア品質向上の 変 2015江戸~今、改革のとき~ 20150204ソフトウェア品質向上の 変 2015江戸~今、改革のとき~ 20150204
ソフトウェア品質向上の 変 2015江戸~今、改革のとき~ 20150204
 
「企業システムにおける意志決定とITサービス運営について」 ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~
「企業システムにおける意志決定とITサービス運営について」  ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~「企業システムにおける意志決定とITサービス運営について」  ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~
「企業システムにおける意志決定とITサービス運営について」 ユーザ企業との協業によるエンタープライズ・アジャイルの支援 ~東京商工リサーチの事例~
 
ITpro expo2014_atlassian
ITpro expo2014_atlassianITpro expo2014_atlassian
ITpro expo2014_atlassian
 
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
 
マネジメントにおいて知っておくべき、ツールを活用したアジャイル開発の実践事例
マネジメントにおいて知っておくべき、ツールを活用したアジャイル開発の実践事例マネジメントにおいて知っておくべき、ツールを活用したアジャイル開発の実践事例
マネジメントにおいて知っておくべき、ツールを活用したアジャイル開発の実践事例
 
ユーザー事例紹介:ソフトウェア開発でのJIRA活用実践!
ユーザー事例紹介:ソフトウェア開発でのJIRA活用実践!ユーザー事例紹介:ソフトウェア開発でのJIRA活用実践!
ユーザー事例紹介:ソフトウェア開発でのJIRA活用実践!
 
20140627 agile japan_embrace change for unchangeability
20140627 agile japan_embrace change for unchangeability20140627 agile japan_embrace change for unchangeability
20140627 agile japan_embrace change for unchangeability
 
GxPユニットテスト研修
GxPユニットテスト研修GxPユニットテスト研修
GxPユニットテスト研修
 
チケット駆動で プロジェクトチームを加速せよ! (2014年5月14日/ソフトウェア開発環境展)
チケット駆動でプロジェクトチームを加速せよ!(2014年5月14日/ソフトウェア開発環境展)チケット駆動でプロジェクトチームを加速せよ!(2014年5月14日/ソフトウェア開発環境展)
チケット駆動で プロジェクトチームを加速せよ! (2014年5月14日/ソフトウェア開発環境展)
 
Sgt2014_GxP
Sgt2014_GxP Sgt2014_GxP
Sgt2014_GxP
 
プロジェクト管理における課題管理ツール運用の”勘所”
プロジェクト管理における課題管理ツール運用の”勘所”プロジェクト管理における課題管理ツール運用の”勘所”
プロジェクト管理における課題管理ツール運用の”勘所”
 
[デブサミ関西2013]チケット駆動で プロジェクトチームを加速せよ
[デブサミ関西2013]チケット駆動でプロジェクトチームを加速せよ[デブサミ関西2013]チケット駆動でプロジェクトチームを加速せよ
[デブサミ関西2013]チケット駆動で プロジェクトチームを加速せよ
 
チケット駆動で加速する顧客と協業するプロジェクトマネジメント
チケット駆動で加速する顧客と協業するプロジェクトマネジメントチケット駆動で加速する顧客と協業するプロジェクトマネジメント
チケット駆動で加速する顧客と協業するプロジェクトマネジメント
 
Devsumi summer 2013_b2_share
Devsumi summer 2013_b2_shareDevsumi summer 2013_b2_share
Devsumi summer 2013_b2_share
 
JIRAを使ったフツウのPJ実践
JIRAを使ったフツウのPJ実践JIRAを使ったフツウのPJ実践
JIRAを使ったフツウのPJ実践
 

Confluence/Jira パフォーマンスチューニングポイント

  • 1. Copyright © 2018 Growth xPartners, Inc. この 作品 は クリエイティブ・コモンズ 表示 - 非営利 - 継承 4.0 国際 ライセンスの下に提供されています。 Confluence/Jira パフォーマンスチューニングポイント 2018/2/2 グロースエクスパートナーズ(株) 大中浩行 第26回 Tokyo Atlassian ユーザーグループ
  • 2. Copyright © 2018 Growth xPartners, Inc. • 大中浩行(Ohanaka,Hiroyuki) • グロースエクスパートナーズ(株) アーキテクチャーソリューション部 テクニカルリード • Atlassian Certified System Administrator 1
  • 3. Copyright © 2018 Growth xPartners, Inc. 弊社について • グロースエクスパートナーズ株式会社 • 所在 東京都新宿区西新宿 新宿野村ビル24・25階 • 2010年よりパートナー(現ソリューションパートナー) • http://www.gxp.co.jp/atlassian/ • https://twitter.com/GxPAtlassian/ 2
  • 4. Copyright © 2018 Growth xPartners, Inc. 今日お話しすること • サイジングについて • Java VMのパラメーターについて • 接続数関連のパラメーターについて • トラブルシューティングについて 3
  • 5. Copyright © 2018 Growth xPartners, Inc. サイジングについて Java VMのパラメーターについて 接続数関連のパラメーターについて トラブルシューティングについて 2018/2/2 4
  • 6. Copyright © 2018 Growth xPartners, Inc. その前に、チューニングについての原則 • アトラシアン製品は、Apache Tomcat(Tomcat)上に アプリケーションがデプロイされて動作しています。 (Bitbucket Serverを除く) • パフォーマンスを考える上では、Javaで書かれたWeb アプリケーションをチューニングする上での原則を適 用しながら進めていくことになります。 5
  • 7. Copyright © 2018 Growth xPartners, Inc. 環境について • Jira Software(以下Jira) 7.6.3 + Confluence 6.7.0 • Server(オンプレミス) 版 • CentOS Linux 7 1708 (64bit) • PostgreSQL 9.6.6 6
  • 8. Copyright © 2018 Growth xPartners, Inc. • 弊社の顧客でパフォーマンスチューニングを行った時 の事例がベースです。 • Jira: 130プロジェクト 約90000チケット (200~500チケット/日) • Confluence: 240スペース 約20万ページ (300~500ページ/日) • 約1200ユーザー 7
  • 9. Copyright © 2018 Growth xPartners, Inc. Jiraのサイジング • Jira Sizing Guide ⁃ https://confluence.atlassian.com/enterprise/jira-sizing- guide-461504623.html 8
  • 10. Copyright © 2018 Growth xPartners, Inc. Confluenceのサイジング • Server Hardware Requirements Guide ⁃ https://confluence.atlassian.com/doc/server-hardware- requirements-guide-30736403.html • 同時編集機能が有効かどうかで、必要となるリソース が変化することに注意 9
  • 11. Copyright © 2018 Growth xPartners, Inc. 現場感覚でのサイジングの目安 • うまくいくチーム開発のツール戦略 ⁃ SoftWare Design連載(リックソフト様) ⁃ 第21回 Atlassian製品を最適に運用するためのポイント(前 編):うまくいくチーム開発のツール戦略 ⁃ http://gihyo.jp/dev/serial/01/teamdev- toolstrategy/0021 10
  • 12. Copyright © 2018 Growth xPartners, Inc. リソースの割当について • 原則は、「一つの仮想マシン(VM)に一つのアプリケー ション」 • サイジングおよび、運用する上で考える要素を単純に するため • 障害が発生した場合の影響範囲を限定するため 11
  • 13. Copyright © 2018 Growth xPartners, Inc. • 個別の環境における最適値を求めるには、計測が不可 欠 • ユーザー数や使用頻度の増減によっても、必要なスペ ックは変化してくる 12
  • 14. Copyright © 2018 Growth xPartners, Inc. モニタリングしましょう(図はMackerel) 13
  • 15. Copyright © 2018 Growth xPartners, Inc. リソースの割当について(続き) • ディスクは拡張可能な構成にすること ⁃ 添付ファイルは増えることがあっても減ることがないため ⁃ 例) ➢ Elastic Volumn(AWS EBS) • https://aws.amazon.com/jp/blogs/news/amazon-ebs-update-new-elastic- volumes-change-everything/ ➢ LVM 14
  • 16. Copyright © 2018 Growth xPartners, Inc. サイジングについて Java VMのパラメーターについて 接続数関連のパラメーターについて トラブルシューティングについて 2018/2/2 15
  • 17. Copyright © 2018 Growth xPartners, Inc. JVMについて • システム要件的にはJDKでもJREでも動作しますが、 JDKを使って起動することを推奨します • JREにはJVMの運用系のコマンド(jstat/jstack/jps等) が同梱されておらず、これらが性能の計測やトラブル シューティングで必要になる場合があるためです 16
  • 18. Copyright © 2018 Growth xPartners, Inc. JVMのパラーメーターについて • ヒープはアプリケーションの規模によって調整する (インストールディレクトリ) (インストールディレクトリ)/bin/setenv.shで設定 17
  • 19. Copyright © 2018 Growth xPartners, Inc. setenv.sh • Jiraの場合 • Confluenceの場合 18 JVM_MINIMUM_MEMORY="1384m" JVM_MAXIMUM_MEMORY="1768m" CATALINA_OPTS="-Xms2048m -Xmx2048m - XX:+UseG1GC ${CATALINA_OPTS}"
  • 20. Copyright © 2018 Growth xPartners, Inc. • パーマネント領域は(-XX:MaxPermSize)はJava8で廃 止されました(Confluence5.8/JIRA7.0以降) • Java8から導入されたメタスペース(- XX:MaxMetaspaceSize)のパラメーターは指定しない で、OSのネイティブ領域の管理に任せることを推奨し ます。(1アプリケーション1VMが前提) 19
  • 21. Copyright © 2018 Growth xPartners, Inc. サイジングについて Java VMのパラメーターについて 接続数関連のパラメーターについて トラブルシューティングについて 2018/2/2 20
  • 22. Copyright © 2018 Growth xPartners, Inc. スレッドプールのチューニング • (インストールディレクトリー)/conf/server.xml • 同時接続数が増えた場合に調整が必要 21 <Connector port="8080" maxThreads="150" minSpareThreads="25" connectionTimeout="20000"
  • 23. Copyright © 2018 Growth xPartners, Inc. maxThreadsの調整にあたって考慮するポイント • リバースプロキシーのTCPコネクションプール • OSのプロセス数制限(ulimit -u) • Jira/Confluenceのデータベースへのコネクションプ ーリングの設定数とのバランス ⁃ 同時接続数を増やしても、データベースへの同時接続が可能な 数値を調整しないままだとデータベースに接続するところに頭 打ちになるため 22
  • 24. Copyright © 2018 Growth xPartners, Inc. Jiraの場合(dbcofnig.xml) 23 <jira-database-config> <name>defaultDS</name> <delegator-name>default</delegator-name> <database-type>postgres72</database-type> <schema-name>public</schema-name> <jdbc-datasource> (略) <pool-min-size>20</pool-min-size> <pool-max-size>20</pool-max-size> <pool-max-wait>30000</pool-max-wait>
  • 25. Copyright © 2018 Growth xPartners, Inc. Confluenceの場合(confluence.cfg.xml) <confluence-configuration> (中略) <property name="hibernate.c3p0.max_size">60</property> (以下略) 24
  • 26. Copyright © 2018 Growth xPartners, Inc. maxThreadsとデータベース接続数の関係の目安 • アトラシアン社ナレッジベース「Confluence slows and times out during periods of high load due to database connection pool」に記載があります。 ⁃ https://confluence.atlassian.com/confkb/confluence- slows-and-times-out-during-periods-of-high-load-due- to-database-connection-pool-146407630.html 25
  • 27. Copyright © 2018 Growth xPartners, Inc. Optimize the database connection pool. This defines the maximum number of connections in the database pool. This number should be at least 10 counts higher or 25% higher (whichever value is greater) than the number of HTTP threads will be used in peak time (see below for setting HTTP threads.) 26
  • 28. Copyright © 2018 Growth xPartners, Inc. Confluence6.7のヘルスチェックの新機能 Confluence6.7のリリースノートから(弊社訳) 私たちは Confluence サイトの問題を警告するためのヘ ルスチェックを改善し続けています。 今回のリリースではアップグレード後のチェックを追加 しました。 HTTPリクエスト用のスレッドプールサイズとデータベ ースコネクションプールサイズの関係が適切かどうかを 診断し、問題があれば警告します。 27
  • 29. Copyright © 2018 Growth xPartners, Inc. confluence.logのログ出力例 28 2018-01-31 17:34:41,920 WARN [localhost-startStop-1] [confluence.impl.health.DefaultHealthCheckRunner] logEvent Your database connection pool allows 60 connections, which is not enough to support the 80 HTTP threads in your Tomcat configuration. Either increase the pool size to at least 100 connections or reduce the maximum number of HTTP threads to 48 or fewer.
  • 30. Copyright © 2018 Growth xPartners, Inc. では、データベースへの同時接続数を増やせばいいのか というと データベース側で受け付けることができる最大接続数は 、データベース側の設定に依存する(例はPostgreSQLの postgresql.confの場合) 29 max_connections = 100 # (change requires restart)
  • 31. Copyright © 2018 Growth xPartners, Inc. • httpの同時接続数と、アプリケーション上のコネクシ ョンプーリングの最大接続数と、データベースサーバ ー上の最大接続数と、それぞれのパラメーターのバラ ンスを取りながら、チューニングすることが求められ ます。 30
  • 32. Copyright © 2018 Growth xPartners, Inc. サイジングについて Java VMのパラメーターについて 接続数関連のパラメーターについて トラブルシューティングについて 2018/2/2 31
  • 33. Copyright © 2018 Growth xPartners, Inc. トラブルシューティング パフォーマンス上の問題が発生し、調査を行う際、スレ ッドダンプの取得が必要になる場合があります。 スレッドダンプとは、Javaプロセス上で動作するJavaス レッド上でのスタックトレースを出力するもので、 JavaVM内のスレッドの動作の状況を調査するのに用い ます。 32
  • 34. Copyright © 2018 Growth xPartners, Inc. Jira/Confluenceの管理画面で取得するSupport Zip内に スレッドダンプの出力は含まれていますが、管理画面へ のアクセスが出来ない場合はOSのシェル上からスレッ ドダンプの取得を行います。 33
  • 35. Copyright © 2018 Growth xPartners, Inc. スレッドダンプの取得方法 • jpsコマンドでアプリケーションのPIDを特定する 34 $sudo /usr/java/default/bin/jps -v |grep jira 1278 Bootstrap - Djava.util.logging.config.file=/opt/atlassian/jira/cur rent/conf/logging.properties - Djava.util.logging.manager=org.apache.juli.ClassLo aderLogManager -Xms384m -Xmx768m(略)
  • 36. Copyright © 2018 Growth xPartners, Inc. スレッドダンプの取得方法 jstackコマンドでスレッドダンプを出力する 動作が停止しているスレッドを特定するため、複数回繰 り返して出力してください 35 $ sudo /usr/java/default/bin/jstack -F 1278
  • 37. Copyright © 2018 Growth xPartners, Inc. スレッドダンプの出力 Attaching to process ID 1278, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.152-b16 Deadlock Detection: No deadlocks found. Thread 5747: (state = BLOCKED) - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise) - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame) - java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=2039 (Compiled frame) - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=100, line=1088 (Compiled frame) - java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take() @bci=1, line=809 (Compiled frame) - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame) - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame) - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame) - java.lang.Thread.run() @bci=11, line=748 (Interpreted frame) 36
  • 38. Copyright © 2018 Growth xPartners, Inc. まとめ 2018/2/2 37
  • 39. Copyright © 2018 Growth xPartners, Inc. • Confluence/Jiraのパフォーマンスチューニングは、 JavaのWebアプリケーションのチューニングのセオリ ーを適用していくことになります。 • それぞれのパラメーターのバランスをとりましょう • 継続的な計測が重要です。 38
  • 40. Copyright © 2018 Growth xPartners, Inc. ありがとうございました! http://www.gxp.co.jp/atlassian/ twitter: @GxPAtlassian 39