3.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
話者紹介
赤羽根 州晴(@akahane92)
島津製作所 業務系システム子会社
・ソフトウェア開発技術者
↓障害対策専任
↓内部統制
・基盤技術標準化 (現在)
3
参加団体
・RxTstudy
・AFFORDD 関西部会
・JaSST関西
4.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
お話しすること
4
5.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
お話しすること
5
1)200万チケットでもサクサク動くRedmineの全レシピ
2)Redmine2.6を3.0へUpdateすると平均で○○%速くなる
3)Ruby2.0を2.2へUpdateすると平均で○○%速くなる
6.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
お話しすること
6
1)200万チケットでもサクサク動くRedmineの全レシピ
2)Redmine2.6を3.0へUpdateすると平均で○○%速くなる
3)Ruby2.0を2.2へUpdateすると平均で○○%速くなる
4)HDDをSSDに変更すると平均で○○%速くなる
5)Redmineチューニング事例10種
6)全走査型の全文検索は○○万チケットで性能限界に到達する
7.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
お話ししないこと
7
1)大規模な並列トランザクション
2)DBMSチューニングの秘境探索
8.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
Redmine使用状況 (アンケート結果)
8
使用しているRedmine 環境は?
有効回答数 65件、複数回答
9.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
Redmine使用状況 (アンケート結果)
9
使用しているRedmine 環境は?
有効回答数 65件、複数回答
UNIX Like
53%
Windows/Bit
nami
27%
Mac
4%
未回答
10%
未使用
6%
UNIX Like
Windows/Bitna
mi
Mac
未回答
未使用
10.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
Redmine使用状況 (アンケート結果)
10
使用しているRedmine 環境は?
有効回答数 65件、複数回答
UNIX Like
53%
Windows/Bit
nami
27%
Mac
4%
未回答
10%
未使用
6%
UNIX Like
Windows/Bitna
mi
Mac
未回答
未使用
UNIX Like :53%
Windows :27%
11.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
Redmine使用状況 (アンケート結果)
11
Redmineの環境構築方法は?
有効回答数 65件、複数回答
14.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
教えて下さい
14
Redmine
・遅いと感じている方は?
・性能チューニング経験は?
・使用しているDBMSは?
(Postgresql、MySQL、SQLite、他)
Eric Peacock
https://www.flickr.com/photos/evilpeacock/6365513881/
15.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
15
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
15
16.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
16
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
16
18.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事業領域
産業機器
航空機器医用機器
分析・計測機器
18
19.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要
19
島津製作所グループ
業務システム
情報系
子会社委託
IT全般統制
ISO
内部統制
省庁監査
20.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要
20
島津製作所グループ
業務システム
情報系
子会社委託
IT全般統制
ISO 他
内部統制
省庁監査
複数の統制・認証に対応
大量の記録が必要
21.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|背景モデル
21
要 件 結 果
業務用ITシステムの全般的な管理記録は
内部統制や各種認証(ISO,ISMS,省庁監査)の
要求に答えなければならない
•記録と整合
•精査と承認
•追跡可能性
•目的合理性
•品質管理
•セキュリティー
22.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|背景モデル
22
課題 3 課題・要望
問合せ受付
調査と確認
状況報告
方針決定
対処と確認
結果報告
時
間課題 2 変更
問合せ受付
調査と確認
状況報告
方針決定
対処と確認
結果報告
時
間課題 1 トラブル
問合せ受付
調査と確認
状況報告
方針決定
対処と確認
結果報告
時
間
複数
ユーザー複数
ユーザー
複数
ユーザー
複数
ユーザー複数
ユーザー
複数
担当者
C事業部
B事業部
A事業部 X System
Y System
Z System
関係者増加 / 事案多様化/システム増加・分散
N : N : N
23.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|業務システムの運営状況
23
業務システム
100種
利用者
7000人
事案
36000件
改版(コミット)
20000回
1700
KLOC
開発運用
200人
/年
/年
/年
自動生成コード含む7~20年超
24.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|問題要約
24
1. 人の記憶が頼り「生き字引き」
2. システム毎の管理台帳で 情報死蔵
3. 経緯は 担当者のMail-Box に蓄積
4. システムと組織の壁が情報流通を阻害
5. パートナー契約、引継ぎ不足
6. 横断検索できない
7. ツールが現実を表現できない
8. 統制・監査・査察への対応負担増
25.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|解決策
25
統合管理
全面導入 Issue
Tracking
System
26.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|ITS導入の全体像
26
Project A
問合せ
要望・課題
障害・バグ
タスク
Project B
問合せ
要望・課題
障害・バグ
タスク
課題管理システム
(ITS)
版数管理ツール
■日常業務に浸透
•トータルで負担減少
•状態の掌握が容易
•コミュニケーション促進
■トレーサビリティー
一意性
永続的な 連鎖性
履歴追跡性
■変化への適応
状況変化を記録し追従
後々の参照が容易に
SVN
27.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|放置チケット対策の定着
27
週次ミーティングで、
積極的にチケット完了
ITSを使った会議
31.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|障害・バグチケット数と完了所要日数の平均
31
0
20
40
60
80
100
120
140
0
500
1000
1500
2000
2500
2010 2011 2012 2013 2014
障害チケット数 完了所要日数平均所要日数平均
129日 → 59日
No Ticket,
No Commit
32.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|「障害・バグ」チケット密度
32
0
20
40
60
80
100
0
10000
20000
30000
40000
2010 2011 2012 2013 2014
件/KT
(Kilo Ticket)
チケット発行数
障害・バグチケット
発行数
障害・バグチケット
密度
障害・バグチケット
密度(Spike除去)
33.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|監査手続の定性評価
33
「全てのIT統制対象システムにおいて、任意の6ヶ月間に
発生した全ての変更事案の中から、設計書とプログラム
の両方、或いはいずれかを変更し、かつ、データ強制変
更を伴う事案の一覧を提出。ここから25件をサンプリン
グし承認行為を示す証憑・証跡を提出」
3時間以内
複数人がかりで
2〜3日
34.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|まとめ 1/2
34
統制実現
コスト低減
属人性軽減
品質, CS向上
業績貢献
【経営要求】
【現場要求】
現業務を表現可能
入力コストに見合う
いつでもどこでも
素早く見つかる
休みやすい
【管理手法】
【統制要求】
IT全般統制
ISO
省庁監査
一意識別
↓
関連維持
↓
追跡可能
↓
信頼可能
現場の利益を動機とする
局所最適型行動規範が、
結果として経営要求を満
たす統合情報基盤とし
て、全体最適型の均衡を
得た
35.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
概要|まとめ 2/2
35
1)100種の業務システムを200人が運用する現場
2)IT統制に対応するため高水準の管理品質を維持
網羅性は必達(全員が全情報を入力し続ける)
3)文房具:常にサクサクの応答性能と盤石な安定性
4)運営のための余力は皆無。省力化の徹底と、
安定性・信頼性の同時成立が不可欠(さもないと帰れない)
36.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
36
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
36
37.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
37
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
37
38.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
38図引用元: http://ja.wikipedia.org/wiki/ボトルネック概念図.png
39.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
39図引用元: http://ja.wikipedia.org/wiki/ボトルネック概念図.png
電子計算機
ネットワークシステム
ボトルネックの
発見と解消
40.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
ボトルネックはどこか?
40
# 対 象 対 策 例
41.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
ボトルネックはどこか?
41
# 対 象 対 策 例
1 通信 狭帯域を回避 Ethernet
42.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
ボトルネックはどこか?
42
# 対 象 対 策 例
1 通信 狭帯域を回避 Ethernet
2 情報量 圧縮 HTML, Text
43.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
ボトルネックはどこか?
43
# 対 象 対 策 例
1 通信 狭帯域を回避 Ethernet
2 情報量 圧縮 HTML, Text
3 電子計算 再処理を回避 多段キャッシュ
44.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
ボトルネックはどこか?
44
# 対 象 対 策 例
1 通信 狭帯域を回避 Ethernet
2 情報量 圧縮 HTML, Text
3 電子計算 再処理を回避 多段キャッシュ
4 永続化 高速装置へ交換 HDD
45.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
ボトルネックはどこか?
45
# 対 象 対 策 例
1 通信 狭帯域を回避 Ethernet
2 情報量 圧縮 HTML, Text
3 電子計算 再処理を回避 多段キャッシュ
4 永続化 高速装置へ交換 HDD
5 アルゴリズム
算法選択による
計算量削減
Sort, GC, Crypt
46.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策1 狭帯域通信を避ける
46
Ethernet等の
低速通信
2M, 10M, 100Mbit毎秒
経路上の最も狭い帯域
47.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策1 狭帯域通信を避ける
47
狭帯域
6→3
48.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策2 情報量の圧縮
48
HTTP/1.1 Compression
情報量 1/4 ~ 1/10
最大10倍速
49.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策3 再処理回避
49
Server
Pas
sen
ger
RAID
OS FS NW
Ruby
Rails
Redmine
DBMS
HTTP
Reverse
Proxy
Client
OS FS NW
Browser
JavaScript / DOM
50.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策3 再処理回避
50
Server
Pas
sen
ger
RAID
OS FS NW
Ruby
Rails
Redmine
DBMS
HTTP
Reverse
Proxy
Client
OS FS NW
Browser
JavaScript / DOM
㋖㋖
㋖㋖
㋖
㋖
㋖
㋖
㋖
㋖
㋖ ㋖
・潤沢なメモリ
・多段キャッシュ
51.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策4 永続化
51
Server
Pas
sen
ger
RAID
OS FS NW
Ruby
Rails
Redmine
DBMS
HTTP
Reverse
Proxy
情報の永続化
SSDの登場
劇的な速度向上
52.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
対策5 算法選択による計算量削減
52
Server
Pas
sen
ger
RAID
OS FS NW
Ruby
Rails
Redmine
DBMS
HTTP
Reverse
Proxy
算法の選択による
速度向上
Sort, GC, Crypt
53.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
チューニング要点
53
Passenger5
OS CentOS6 (64bit)
Ruby 2.2
Rails4.2
Redmine 3.0
DBMS
MySQL
5.6
HTTP
Apache
2.2
メモリ 4〜16GBCPU 2〜4コア
VMware (可用性、信頼性)
VCS
Subversion
1.7
HTTP
Reverse
Proxy
---
:8KeyPoint
Network
54.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
チューニングの基本
チューニング要点
54
Passenger5
OS CentOS6 (64bit)
Ruby 2.2
Rails4.2
Redmine 3.0
DBMS
MySQL
5.6
HTTP
Apache
2.2
メモリ 4〜16GBCPU 2〜4コア
VMware (可用性、信頼性)
VCS
Subversion
1.7
HTTP
Reverse
Proxy
---
:8KeyPoint
Network
Redmineは変更しない
55.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
55
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
55
56.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
56
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
56
57.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
57
【背景】
・年間3万6千チケット起票
・業務の中心にITS(Redmine)
・処理遅延や障害停止は回避必須
58.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
58
【背景】
・年間3万6千チケット起票
・業務の中心にITS(Redmine)
・処理遅延や障害停止は回避必須
【2012年10月】
・ITSの業務活用が急拡大
・200万チケットまで確認
・問題を洗い出した
59.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
59
【背景】
・年間3万6千チケット起票
・業務の中心にITS(Redmine)
・処理遅延や障害停止は回避必須
【2012年10月】
・ITSの業務活用が急拡大
・200万チケットまで確認
・問題を洗い出した
【2015年5月】
・予測と実績
・Redmine, Ruby, Rails, H/Wの変化
・再度、性能ベンチマークを計測して最適解を選ぶ
60.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
60
基準
61.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
61
画面応答時間の基準*とは?
62.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
62
画面応答時間の基準*とは?
100ms 直接操作している一体感
* 参考文献
Jakob Nielsen (1993). Response Times: The 3 Important Limits
http://www.useit.com/papers/responsetime.html
Miller, R. B. (1968). Response time in man-computer conversational transactions.
http://theixdlibrary.com/pdf/Miller1968.pdf
63.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
63
画面応答時間の基準*とは?
100ms 直接操作している一体感
1000ms 遅延を感じつつも軽快
* 参考文献
Jakob Nielsen (1993). Response Times: The 3 Important Limits
http://www.useit.com/papers/responsetime.html
Miller, R. B. (1968). Response time in man-computer conversational transactions.
http://theixdlibrary.com/pdf/Miller1968.pdf
64.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
64
画面応答時間の基準*とは?
100ms 直接操作している一体感
1000ms 遅延を感じつつも軽快
10000ms 集中限界、進捗表示必須
* 参考文献
Jakob Nielsen (1993). Response Times: The 3 Important Limits
http://www.useit.com/papers/responsetime.html
Miller, R. B. (1968). Response time in man-computer conversational transactions.
http://theixdlibrary.com/pdf/Miller1968.pdf
65.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
65
画面応答時間の基準*とは?
100ms 直接操作している一体感
1000ms 遅延を感じつつも軽快
10000ms 集中限界、進捗表示必須
* 参考文献
Jakob Nielsen (1993). Response Times: The 3 Important Limits
http://www.useit.com/papers/responsetime.html
Miller, R. B. (1968). Response time in man-computer conversational transactions.
http://theixdlibrary.com/pdf/Miller1968.pdf
Redmineは文房具
66.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク
66
実測値
67.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|実測値
67
Redmineアクセス数*の経年変化
* 6年分のApache アクセスログに記載されたURI
68.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|実測値
68
12,935
35,397
152,142
210,289
221,656
286,943
297,058
0
50,000
100,000
150,000
200,000
250,000
300,000
350,000
2009 2010 2011 2012 2013 2014 2015
累計1216万アクセス
3ヶ月で前年越えRedmineアクセス数*の経年変化
* 6年分のApache アクセスログに記載されたURI
件
69.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|実績値
6年間の運用結果*を集計
69* Production.logに記載された処理時間 (Redmine~DB)
93.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果4
93
過去のRedmineと比較
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
200万
150万
100万
70万
50万
30万
20万
10万
ms
94.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果4
94
過去のRedmineと比較
最速ベンチマークを比
較してみると、
Redmine2.3に比較し
て、
→3.0は 29.2%
→2.6は 33.4%
性能が低下している。
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
200万
150万
100万
70万
50万
30万
20万
10万
ms
95.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果4
95
過去のRedmineと比較
Redmineの機能増加
が、Rails・Redmine
MultiThread化・Ruby-
GCによる性能向上分
を消費し、不足したも
のと推測
電子計算機の能力向上が生じている
ため、比較精度は完全ではない。性
能低下はさらに大きいと予想される
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
200万
150万
100万
70万
50万
30万
20万
10万
ms
96.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果4
96
他のボトルネックを解消するしかない…
そこで「永続化」I/O処理を、
廉価になったHDDをSSDに変換
97.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果5
97
HDDをSSDに変換する効果
0
2000
4000
6000
8000
10000
12000
10万
20万
30万
50万
70万
100万
150万
200万
ms
98.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果5
98
HDDをSSDに変換する効果
・Redmine3.0におい
てHDDをSSDに交換
すると、平均で
25.7 % 性能が向上す
る
・性能低下が軽減
HDD 38.6%減
↓
SSDで16.7%減
0
2000
4000
6000
8000
10000
12000
10万
20万
30万
50万
70万
100万
150万
200万
ms
99.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果6
99
複数プラグイン導入の性能への影響
結果だけ記載(グラフは後ほど)
Redmine Pluginの多くはHookによって画面処理に割
り込みをかけている。多数のHook処理の中に、性能
考慮が十分でないコードが繰り返し呼び出された場
合、 応答性能への影響が懸念される。実際に計測し
てみた結果、平均4%の性能低下が計測された。
不要なPluginを除去することで、応答性能が4パーセ
ント程度向上する。
100.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
0
2000000
4000000
6000000
8000000
10000000
12000000
14000000
No Cash BP Save &
Load
200万
150万
100万
70万
50万
30万
20万
10万
ベンチマーク|計測結果7
100
FTS応答性能の計測
・Redmineの全文検索は、
全走査(非索引型)の検索処理
によって実現されている。
・No BP Cash
10万チケット 24秒
100万チケット 207秒(3分27秒)
200万チケット 6204秒(103分24秒)
・BP Save & Load
10万チケット 17秒
100万チケット 162秒(2分42秒)
200万チケット 3601秒(60分1秒)
秒
101.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
0
2000000
4000000
6000000
8000000
10000000
12000000
14000000
No Cash BP Save &
Load
200万
150万
100万
70万
50万
30万
20万
10万
ベンチマーク|計測結果7
101
FTS応答性能の計測
1)SSDにしても効果があまり無かった
2)対策
全走査対象データを全てメモリ上に乗せる
3)Redmineのチューニング限界点
「FTSClickAttackによるDDoS」には耐えられない。
実際に数回発生。(200人のブラウザが真っ白
でWaiting。F5攻撃が始まる。思い出しても冷や汗
がでる)
4)希望の光
JPLがPoCを終えているという超高速索引型FTS。
皆さんは、どのような技法だと思いますか?
秒
秒
102.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果8
102
Redmine3.0は200万チケットで“サクサク”なの
か?
103.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果8
103
Redmine3.0は200万チケットで“サクサク”なの
か?
0
100
200
300
400
500
600
700
800
900
10万 20万 30万 50万 70万 100万 150万 200万
チケット表示(小)
チケット表示(大)
チケット表示(中)
チケット一覧
プロジェクトTop
プロジェクト一覧
RedmineTop
ms
104.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果8
104
Redmine3.0は200万チケットで“サクサク”なの
か?
0
100
200
300
400
500
600
700
800
900
10万 20万 30万 50万 70万 100万 150万 200万
チケット表示(小)
チケット表示(大)
チケット表示(中)
チケット一覧
プロジェクトTop
プロジェクト一覧
RedmineTop
ms
チューニングの結果、Redmine3.0の
主要画面7種の平均応答時間は106ms
105.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
ベンチマーク|計測結果8
105
Redmine3.0は200万チケットで“サクサク”なの
か?
0
100
200
300
400
500
600
700
800
900
10万 20万 30万 50万 70万 100万 150万 200万
チケット表示(小)
チケット表示(大)
チケット表示(中)
チケット一覧
プロジェクトTop
プロジェクト一覧
RedmineTop
ms
全文検索 20秒
対策必須
MySQL 5.6, Postgres9.4に
対策有り(BufferPool Dump/Restore)
DB始動時の
暖機運転5分 BufferPool 8GB必須
106.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
106
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
106
107.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
目次
107
第1部 背景と要求
第2部 チューニングの基本
第3部 ベンチマーク
第4部 性能改善事例集
第5部 まとめ
(質疑応答)
107
108.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
性能改善事例集
108
1. 6年間に渡るRedmineの運用において、
どのような問題が発生し、どうやって
解消したのか
2. 信頼性と安定性を維持する取組みの
「実際と限界」に焦点
3. 各種設定、チューニング方法、性能計
測方法を全て紹介する
109.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
計測 - 定量化手法
「測定できないものは制御できない」*
1.テスト実行時間 (Redmine Built-in Test Code)
2.負荷ベンチマーク
・httpref http://www.hpl.hp.com/research/linux/httperf/
・wrk https://github.com/wg/wrk
・apache bench http://httpd.apache.org/docs/2.2/programs/ab.html
3.時間計測
・MySQL Slow-query ログ
・Redmineログ (Production.log, Development.log)
4.分析
・SQL実行計画(MySQL Workbench)
・Chrome開発者ツール https://developer.chrome.com/devtools
109* DeMarco, Tom., 1982, “You can’t control what you can't measure.”
110.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例1)【性能】全体がひどく遅い
110
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: OS, DBMS, Http Server, Ruby, WebAppServer
・N/W: 通信帯域, Switching-Hub
111.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例1)【性能】全体がひどく遅い
111
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: OS, DBMS, Http Server, Ruby, WebAppServer
・N/W: 通信帯域, Switching-Hub
1)Memory できるだけ多く
2)Disk I/O HDD→ SSD
3)CPU は コア数=同時接続数
4)OSは5万件までWindowsでも可。早めの引越を推奨
Linuxでは200万件まで確認済
5)DBMSは MySQL, Postgresql を使用し、必ず設定値を
変更。 Sqliteは×
6)Apache等の通信データ圧縮を行う。ネットワーク帯域
が狭い時やトラフィック輻輳の時に高い効果が得られる。
112.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例1)【性能】全体がひどく遅い
112
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: OS, DBMS, Http Server, Ruby, WebAppServer
・N/W: 通信帯域, Switching-Hub
7)Rubyは利用可能な最新版を使用
1.9 < 2.0 <<< 2.1 < 2.2
8)WEBrick <<< Thin < Passenger4 < Passenger5
(Unicornは未調査。速い。しかし扱い易さの点で不採用)
9)ネットワーク通信経路上の狭帯域を無くす。
10M/bps → 1G/bps (ケーブル+Switch機器を交換)
10)ネットワーク通信経路上の低速パケットスイッチ
ングを無くす。(Normal-HubをSwitchへ交換)
113.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例1)【性能】全体がひどく遅い
113
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: OS, DBMS, Http Server, Ruby, WebAppServer
・N/W: 通信帯域, Switching-Hub
11)Windows Bitnami
ボトルネックは
a)Ruby2.0系 → Updateを待つ
b)MySQLの32bit、 → メモリ制限。Updateは期待薄
設定値を2ヶ所書き換えれば、3万件までサクサク
c)Thin 2スレッド → CPUコア数に空きがあれば設定可能
12)Windows スクラッチ
ボトルネックは、Ruby、Thin。それ以外は何とかなる。
(何かと制約が多く、手間が掛かって辛い)
114.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例2)【性能】リポジトリタブが遅い
114
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: DBMS, Ruby, WebAppServer, Subversion Server
・N/W: 通信帯域, Switching-Hub
1)Post-CommitでプロジェクトID指定
Subversion ServerとRedmineの同期を、
特定のProjectのみ実施
2)Subversion をVersion Upし、セッションキャッシュ
メモリを付与する。(Subversion 1.7 以降)
3)Subversion をVersion Upし、通信内容の圧縮機能を
使用する
115.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例2)【性能】リポジトリタブが遅い
115
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: DBMS, Ruby, WebAppServer, Subversion Server
・N/W: 通信帯域, Switching-Hub
4)リビジョン数が多い時や、バイナリファイル(Excel,
Word)の履歴が多い場合、Subversion ServerをLinuxで構築
する。(できればSSDを使用する)
5)通信帯域を広くする。
6)Redmine側 MySQL テーブル更新が遅い
7)DBMSメモリチューニングを行う。
116.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例3)【性能】検索が遅い
116
1)MySQLメモリチューニング
全インデックス、全データをオンメモリにする。
2)カスタムフィールドの設定
「フィルタとして使う」の数が多いと極端に性能が落ちる
3)FTS (Full Text Search)
・RedmineはWYSIWYGデザイン。
・全プロジェクト横断検索 は全走査型の検索方式なので、
処理負荷は線形増加(Redmineコアが抱える性能上の課題)
【チューニング要素】
・H/W: Memory, CPU
・S/W: DBMS、
117.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例4)【性能】画面応答が遅い
117
- Rubyのバージョン 処理性能は 2.2 > 2.1 >>> 2.0 >> 1.9 > 1.8
- MySQLメモリチューニング(全インデックスと主要データをオン
メモリ化)
- 初回アクセスが極端に遅い, MySQL 5.6のBP Save and Load.
- 同時並行処理 イス取りゲーム. bitnami はイス2つしかない。
- マルチスレッド対応 (Redmineは3.0からMT対応。並列処理性能が
○○%向上)
- メール送信(Async)
- Pluginは割り込み処理。多ければその分遅くなる。
応答性能まで考慮されているPluginはそう多くない。
- Network (通信圧縮 10分の1)
【チューニング要素】
・H/W: HDD, Memory, CPU
・S/W: OS, DBMS, Http Server, Ruby, WebAppServer
・N/W: 通信帯域, Switching-Hub
118.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例5)【性能】特定プラグインが遅い
118
【チューニング要素】
・H/W: Memory, CPU
・S/W: DBMS, Ruby, WebAppServer
- 多くのプラグインは大量のデータ処理を想定していない。
極端に遅い場合はチューニングを施し、作者にパッチを送付できる。
処理遅延の原因は、SQL/コード実装/データ設計の3系統にを大別できる。
SQLとコード実装は何とか対処もできるが、データ設計は大がかりな変更を
伴うので、テストコードが無ければ諦める。
- 例)Work Time 10倍速(1画面 10秒 → 1秒)
以下にご紹介する方法は、一般的なWebアプリケーションのデバッグ手法に
過ぎない。
SQL実行計画の調査方法はDBMS製品毎に異なるが、類似機能は必ず存在する。
https://bitbucket.org/tkusukawa/redmine_work_time/pull-request/17
【SQL調査手順】
【アプリコード調査手順】(今回は実施せず)
【データ設計調査手順】(今回は実施せず)
119.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例6)【安定性】不安定で手間がかかる
119
- 3歩遅れ
- 枯れた技術
- Linux OS >>> Windows
(両方面倒を見てきたが、Ruby, Rails はWindowsで制限が多い
印象)
- 環境を並立させて、差替える
- OSS パッチの取込み: 多くの場合、性能が改善されている。
Git 追跡ブランチモードで、Local変更との共存
【チューニング要素】
・H/W: Memory, CPU
・S/W: DBMS, Ruby, WebAppServer
120.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例7)【信頼性】エラー、事故が多い
120
- Exception Redirect mail 通知による、不具合検出
- Redmine本体、Railsにはほぼ手を入れない。
- Pluginは殆ど採用していない。管理用のみ。Redmineコ
アのUpdate負担に。
- 完全なクローン環境を常設(ゴミデータ、評価用デー
タを本番に持ち込ませない)
121.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例8)【性能】電算機のH/W資源不足
121
- 1VMに集約し、狭帯域通信を回避
- CPU キャッシュの大きなものを複数コア。SBSは 4コア。同時接続数に合わ
せる。
- メモリ できるだけ積み込む。 SBSは8GB
- SSDで稼働 (Muninのグラフ変化) http://172.29.224.129/munin/disk-year.html
122.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例9)【性能】電算機通信網の帯域不足
122
<Network>
- 主要通信経路は1G/bpsに統一。10M, 100Mのボトルネッ
クを排除
- Normal Hub → Switch によるコリジョン発生率の低減
123.
Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved
事例10)【性能】起動が遅い
123
<DBMSの起動・再起動直後、初回アクセスだけが極端に遅い>
- DBMSサーバーの起動、再起動時は「暖機運転」が必要
- 「暖機運転」とは、DBMS再起動後にデータやインデックスをメモ
リ上へ読み込む一連の処理。対象となるデータが増えると、長時間か
かるようになる。
- MySQL5.6系warm up 、Postgresql 9.4系pg_prewarmとして
実装されたBufferPool、Workloadの保存・読込機能によって
待ち時間が大幅に短縮される。
Be the first to comment