Your SlideShare is downloading. ×
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Redmineチューニングの実際と限界
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Redmineチューニングの実際と限界

7,977

Published on

Tokyo.redmine #8 …

Tokyo.redmine #8
内容解説が不十分なところがあります。
近日中に加筆修正し、具体的な設定例を追加します。

Published in: Technology
0 Comments
60 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,977
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
60
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  •  「OSSは人類の資産です。これ無しでは何も出来なかった。
      OSSを支えて下さっている皆様に深く感謝します。
      たとえ小さなお手伝いであっても、自分にも出来る貢献をし続けたいと思っています。」
  • 来週金曜日5月22日、派生開発カンファレンス2015 で発表します。
  • Unix Like OSと、Windowsで80%
  • Unix Like OSと、Windowsで80%
  • Unix Like OSと、Windowsで80%
  • 島津製作所 全世界で57拠点、従業員1万人
    業務システムの多くを引き受け、開発・運用を遂行
    業務システムは長期間にわたって多くの変更を加えながら稼働する
  • こういった製品を製造しています【2秒で次へ】
  • 上場企業として、内部統制
    ISOなどのマネジメントシステムを複数適用
    主担当者として、6年間 関わってきました。
  • 現場の負担が大きい
    企業競争力への影響
  • 記録を整合させ、精査・承認を行い、トレーサビリティーを確保
    結果として、事業の目的合理性に沿った品質とセキュリティーを得る
  • 多くの事案が入り乱れ、短期間で終わるもの、長期間にわたるもの、様々です。
    システム連携は増加の一途にあります。
    → 個々の事案について、詳しく見てみましょう。(次スライド)
  • (読み上げ)
    単純計算だが、10年で36万案件、20万コミットにも及ぶ。
    これらの膨大な記録を、漏れなく保管しなければならない。
    → この100システムは単独で稼働しているのではなく…(次スライド)
  • (強調部分を主に読み上げ)

    多くの現場が同様の課題に直面しているのではないでしょうか?
    実状に対して、高水準の要求が複数あります。現場が混乱する原因はここにあると私は考えています。
     
    現象 ・ 課題
    1  不確かで、消滅する
    2  再利用困難。作業コストが水泡に帰す
    3  検索できず、異動・離職で消滅
    4  共有不足で不具合、障害が増加
    5  経緯不明で後任の保守効率が低下
    6  モジュール間連携の影響探索に限界 過去経緯の不明が品質低下の温床
    7  業務効率の低下
    8  業務効率の低下、コストの上昇
  • 全てを統合管理 / 組織に全面導入 / 解決経過と効果検証
    ITSは本当に便利で、現場に役立つ仕組みです。同時に高水準の管理要求もこなします。
    少しでも皆様のお役に立てたならば、京都から来た甲斐があります。
  • (右図 タイトルのみ読上げ)
  • 5月14日時点で154000チケット。
    完了率は95%
    チケット発行状況に比して、完了率の上昇が見られます。
    有効な定着が得られたと考えます。
  • 完了所要日数の平均は
     2011年の94日から
     2013年の44日へ半減しています。
    長期滞留チケットの減少、管理手順の有効な定着、処理スループットの向上による効率化が得られました。
  • その一方で、完了所要日数の平均が半減し、システム障害の処理効率化が実現しました。
  • 特定システム1種のSpikeデータを除去すると、破線の折れ線グラフが示すとおり、密度の経年変化は維持傾向にあります。
    この事実から、「障害・バグ」チケット件数の経年増加は、ITSと版数管理の利用徹底による、記録粒度の微細化によるものと考えています。
  • 監査や認証対応の定量計測は行っていない。参考として実例を示す。
    (読み上げる)
  • 各要求に応えるため、管理手法を選んだ。
    「一意識別→関連維持→追跡可能→信頼可能」
    個人の利益を動機とする局所最適型 行動規範が、(結果として) 経営に資する知識管理システムとして、全体最適型 の均衡を得ていた。
  • 2015年02月26日 中央大学理工学部 竹内健教授、SSDを従来比6倍高速化、5倍の高信頼化する技術をISSCCで発表
  • 安全性、信頼性が第一。
  • 累計 1,216,420 アクセス
    ( [09/Nov/2009:08:48:59] ~ [03/Apr/2015:18:21:01])
  • 累計 1,216,420 アクセス
    ( [09/Nov/2009:08:48:59] ~ [03/Apr/2015:18:21:01])
  • ベンチマーク対象のページ選定は妥当。ベンチ結果も信頼できる。
  • 10万件の実データを元にして、データの質的分布が同じになるよう増やした。
     
    【薄緑】 カスタムフィールドはチケットの増加と共に、大量のレコードを作り出すことが分かる。
    【オレンジ】 注記欄もチケットの増加と共に大きく伸びる。
  • 10万件の実データを元にして、データの質的分布が同じになるよう増やした。
     
    【薄緑】 カスタムフィールドはチケットの増加と共に、大量のレコードを作り出すことが分かる。
    【オレンジ】 注記欄もチケットの増加と共に大きく伸びる。
  • 各Redmineバージョンの最速ベンチマークを比較してみる。
    電子計算機の能力向上が生じているため、比較精度は完全ではない。
    2012年10月時点に計測したRedmine 2.3の頃に比べて3.0は遅い。2.6はさらに遅い事がわかる。

    Redmineの機能増加が、Rails、Redmine MT化、Ruby といった性能改善を食い尽くしたものと思われる。
  • 各Redmineバージョンの最速ベンチマークを比較してみる。
    電子計算機の能力向上が生じているため、比較精度は完全ではない。
    2012年10月時点に計測したRedmine 2.3の頃に比べて3.0は遅い。2.6はさらに遅い事がわかる。

    Redmineの機能増加が、Rails、Redmine MT化、Ruby といった性能改善を食い尽くしたものと思われる。
  • 各Redmineバージョンの最速ベンチマークを比較してみる。
    電子計算機の能力向上が生じているため、比較精度は完全ではない。
    2012年10月時点に計測したRedmine 2.3の頃に比べて3.0は遅い。2.6はさらに遅い事がわかる。

    Redmineの機能増加が、Rails、Redmine MT化、Ruby といった性能改善を食い尽くしたものと思われる。
  • HDD計測:Redmine2.3:3.0は 38.6 %の性能低下
    SSD計測:Redmine2.3:3.0は 16.7 %の性能低下に収まった
  • HDD計測:Redmine2.3:3.0は 38.6 %の性能低下
    SSD計測:Redmine2.3:3.0は 16.7 %の性能低下に収まった
  • 全走査 フルスキャン
  • ・SSDにしても効果があまり無かった  → DBMS上に記録された全走査処理のため、読込のDisk I/O処理が改善されると思ったが、I/O時間に比して、全走査処理の計算時間がとても大きいものだったため、数値に出るほどの変化は現れなかった。
  • 主要画面7種の平均応答時間は、
    745 ÷ 7 = 106ms
  • 主要画面7種の平均応答時間は、
    745 ÷ 7 = 106ms
  • 主要画面7種の平均応答時間は、
    745 ÷ 7 = 106ms
  • Transcript

    • 1. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved Redmineチューニングの 実際と限界 〜200万チケットでもサクサクなRedmineの作り方〜 第8回 Redmine.tokyo 2015年5月16 日 株式会社島津ビジネスシステムズ 基盤技術部 赤羽根 州晴 kakahane@sbs.shimadzu.co.jp
    • 2. 2 ありがとう。 Thanksalot. Mercibeaucoup.
    • 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件、複数回答
    • 12. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved Redmine使用状況 (アンケート結果) 12 Redmineの環境構築方法は? 有効回答数 65件、複数回答 ソースを入手 40% Bitnamiイン ストーラー 24% rpm等パッ ケージ使用 7% ALMinium 4% 仮想マ シンイ メージ 3% クラウドサー ビス 3% 不明 12% 未回答 7% ソースを入手 Bitnamiインストーラー rpm等パッケージ使用 ALMinium 仮想マシンイメージ クラウドサービス 不明 未回答
    • 13. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved Redmine使用状況 (アンケート結果) 13 Redmineの環境構築方法は? 有効回答数 65件、複数回答 ソースを入手 40% Bitnamiイン ストーラー 24% rpm等パッ ケージ使用 7% ALMinium 4% 仮想マシン イメージ 3% クラウドサー ビス 3% 不明 12% 未回答 7% ソースを入手 Bitnamiインストーラー rpm等パッケージ使用 ALMinium 仮想マシンイメージ クラウドサービス 不明 未回答 スクラッチ構築: 40% 事前構築の展開: 38% クラウド : 3%
    • 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
    • 17. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 株式会社 島津製作所 2014年3月31日現在 1875年 1917年 266億円 創 業| 設 立| 資 本 金| 従 業 員 数 | 3,075億円 (2014年3月期) 69社 (国内25社, 海外44社) グループ売上高| グ ル ー プ 会 社 | 社 是|科学技術で社会に貢献する 経営理念|「人と地球の健康」への願いを実現する 17 10,612名 (連結)
    • 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を使った会議
    • 28. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 概要 ・プロジェクト数、ユーザー数の経年変化 28 0 50 100 150 200 250 300 350 0 20 40 60 80 100 120 140 160 2010 2011 2012 2013 2014 プロジェクト数 ユーザー数 ユ ー ザ ー 数 プ ロ ジ ェ ク ト 数 Project数 130 User数 350
    • 29. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 概要|チケットの発行数と完了率 29 0 10 20 30 40 50 60 70 80 90 100 0 5000 10000 15000 20000 25000 30000 35000 40000 2010 2011 2012 2013 2014 Ticket発行数 完了率 近似曲線(線形) 完了率 87% → 93% 累計 130,000 3,000/月
    • 30. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 概要|完了所要日数の分布と平均 0 10 20 30 40 50 60 70 80 90 100 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% 2010 2011 2012 2013 2014 6ヶ月以上 6ヶ月 3ヶ月 1ヶ月 2週間 1週間 1日 平均完了日数 日 30
    • 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)
    • 70. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|実績値 6年間の運用結果*を集計 70* Production.logに記載された処理応答時間 (Redmine~DB) ・673万回の処理 100ms 32% 200ms 21% 300ms 17% 400ms 10% 500ms 6% 600ms 4% 700ms 2% 1000ms超 5% 100ms 200ms 300ms 400ms 500ms 600ms 700ms 800ms 900ms 1000ms 1000ms超
    • 71. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|実績値 6年間の運用結果*を集計 71* Production.logに記載された処理応答時間 (Redmine~DB) ・673万回の処理 ・半分が200ms以下 ・95%が1秒以下 100ms 32% 200ms 21% 300ms 17% 400ms 10% 500ms 6% 600ms 4% 700ms 2% 1000ms超 5% 100ms 200ms 300ms 400ms 500ms 600ms 700ms 800ms 900ms 1000ms 1000ms超
    • 72. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|実績値 6年間の運用結果*を集計 72 統計要約 最小値 : 1 第1四分位点 : 67 中央値 : 185 平均値 : 415 第3四分位点 : 339 最大値 :3314811 * Production.logに記載された処理応答時間 (Redmine~DB) ・673万回の処理 ・半分が200ms以下 ・95%が1秒以下 ・中央値185ms 100ms 32% 200ms 21% 300ms 17% 400ms 10% 500ms 6% 600ms 4% 700ms 2% 1000ms超 5% 100ms 200ms 300ms 400ms 500ms 600ms 700ms 800ms 900ms 1000ms 1000ms超
    • 73. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|評価対象 6年間の運用結果*を集計し、主要画面を決定 73* 6年分のApache アクセスログに記載されたURI
    • 74. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|評価対象 6年間の運用結果*を集計し、主要画面を決定 74* 6年分のApache アクセスログに記載されたURI 35% 20%6% 6% 4% 4% 3% 2% 2% 1% 17% チケット表示 チケット一覧 Wikiページ プロジェクトTop 添付ダウンロード 検索(プロジェクト) ログイン画面 マイページ RedmineTop 添付画像サムネイル その他 ・1080万アクセス
    • 75. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|評価対象 6年間の運用結果*を集計し、主要画面を決定 75 35% 20%6% 6% 4% 4% 3% 2% 2% 1% 17% チケット表示 チケット一覧 Wikiページ プロジェクトTop 添付ダウンロード 検索(プロジェクト) ログイン画面 マイページ RedmineTop 添付画像サムネイル その他 * 6年分のApache アクセスログに記載されたURI ・1080万アクセス ・チケット一覧 + 単票表示で55% ・利用頻度、遅延 を体感しやすい画面
    • 76. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|評価対象 6年間の運用結果*を集計し、主要画面を決定 76 35% 20% 6% 2% チケット表示 チケット一覧 Wikiページ プロジェクトTop 添付ダウンロード 検索(プロジェクト) ログイン画面 マイページ RedmineTop 添付画像サムネイル その他 ・1080万アクセス ・チケット一覧 + 単票表示で55% ・利用頻度、遅延 を体感しやすい画面 ・ベンチマーク対象が 全体の62%を網羅 * 6年分のApache アクセスログに記載されたURI
    • 77. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|テストデータ 77 規模
    • 78. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|テストデータ 78 0 5,000,000 10,000,000 15,000,000 20,000,000 25,000,000 30,000,000 10万件 20万件 30万件 50万件 70万件 100万件 150万件 200万件 データレコード数 チケット数 チケット数 Custom Field(種類) Custom Field(記録) 添付ファイル 時間記録 注記欄 リポジトリ変更 リポジトリ変更セット ウォッチャー Ticket関係性 規模
    • 79. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|テストデータ 79 0 5,000,000 10,000,000 15,000,000 20,000,000 25,000,000 30,000,000 10万件 20万件 30万件 50万件 70万件 100万件 150万件 200万件 データレコード数 チケット数 チケット数 Custom Field(種類) Custom Field(記録) 添付ファイル 時間記録 注記欄 リポジトリ変更 リポジトリ変更セット ウォッチャー Ticket関係性 規模 200万チケットは 3000万レコード カスタムフィールドは 77種に固定
    • 80. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|テストデータ 80 200万チケットの内訳 最大想定 チケット数 200万 カスタムField値 1200万 添付ファイル 140万 時間記録 74万 注記欄 363万 Watcher 76万 Ticket関係 27万
    • 81. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測方法 81
    • 82. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測方法 82 a) 主要画面7種に対して(2並列で25回アクセ ス)を×10回実行した平均応答時間を計測 b) 上記a)をDBキャッシュ状態3種を順次切替えて 実行する。(1)DBキャッシュ無し、(2)DBキャッシュ 保存・復元、(3)Fullメモリキャッシュ c) 上記の(3)Fullメモリキャッシュを採用する。 d) 上記のa)~c) を10万~200万まで繰り返す。 メモリ、Ruby、 OOBGCの有無 10万 20万 30万 50万 70万 100万 150万 200万 8G_Ruby1.9.3 所要時間合計(ミリ秒) 1231 1206 1376 1405 1513 1515 1470 1495 主要画面7種のURI /its30 26.3 26.1 23.2 25.7 22.3 23.7 25.6 22.6 /its30/projects 51.4 51.4 56.6 54.6 56.1 56.9 52.6 56.3 /its30/projects/sscope 118.1 116.2 120.3 114.5 116.9 112.1 120.6 122.5 /its30/issues?per_page=200 536 512.3 521.2 554.2 614.4 600.5 542.8 525.4 /its30/issues/1 126.5 111 251.4 246.4 253.6 246 257 264.4 /its30/issues/47548 226.8 222.6 238.8 251 282.3 309.2 305.5 338.7 /its30/issues/51782 146.1 166.4 164.3 158.5 167.7 166.9 166.2 164.7
    • 83. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測方法 83 計測プログラム # bench.rb # -*- coding: utf-8 -*- url_list = [ "/its30 ", "/its30/projects ", "/its30/projects/sscope ", "/its30/issues?per_page=200 ", "/its30/issues/1 ", "/its30/issues/47548 ", "/its30/issues/51782 " ] puts "--- Environment ---" puts `httpd -version` puts `ruby -v` puts `gem list --local passenger` puts `export RAILS_ENV=production; /var/lib/its/rm30_its/bin/about` puts `export RAILS_ENV=production; /var/lib/its/rm30_its/bin/bundle list` ti = 10 result = [] url_list.each { |url| rate_avg = ms_avg = 0 puts "--- #{url} ---" ti.times { res = `httperf --hog --server=localhost --port=80 --uri=#{url} --num-conns 2 -- num-calls 25 2> /dev/null | grep 'Request rate:' | awk '{print$3,$5}' | sed -e 's/(//'` num = res.split(' ').map{|s| s.to_f} puts " rate: #{num[0]} req/s #{num[1]} ms/req" rate_avg += num[0] ms_avg += num[1] sleep 0.2 } rate_avg = (rate_avg/ti).round(1) ms_avg = (ms_avg/ti).round(1) result << [rate_avg, ms_avg] puts " AVG: #{rate_avg} req/s #{ms_avg} ms/req" } puts "-------------------------" result.size.times { |r| puts "#{r+1} t #{url_list[r]} t #{result[r][0]} t #{result[r][1]}" } puts "-------------------------" result.size.times { |r| puts " AVG Rate: #{result[r][0]} req/s (#{result[r][1]} ms/req)" }
    • 84. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果1 84 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.2.2 8G_Ruby2.1.6_OOBGC 8G_Ruby2.1.6 8G_Ruby2.0.0_OOBW 8G_Ruby2.0.0 8G_Ruby1.9.3 Redmine3.0の最速ベンチ 10万 20万 30万 50万 70万 100万 150万 200万 ms
    • 85. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果1 85 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.2.2 8G_Ruby2.1.6_OOBGC 8G_Ruby2.1.6 8G_Ruby2.0.0_OOBW 8G_Ruby2.0.0 8G_Ruby1.9.3 Redmine3.0の最速ベンチ 10万 20万 30万 50万 70万 100万 150万 200万 ms
    • 86. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果1 86 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.2.2 8G_Ruby2.1.6_OOBGC 8G_Ruby2.1.6 8G_Ruby2.0.0_OOBW 8G_Ruby2.0.0 8G_Ruby1.9.3 Redmine3.0の最速ベンチ 10万 20万 30万 50万 70万 100万 150万 200万 最も遅い Ruby2.0 に比して、 最速のRuby2.1.6+OOGBCは 25.4% 速い
    • 87. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果2 87 Redmine3.0は速いのか
    • 88. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果2 88 0 2000 4000 6000 8000 10000 12000 Redmine3.0 Redmine2.6 10万 20万 30万 50万 70万 100万 150万 200万 Redmine3.0は速いのか ms
    • 89. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果2 89 0 2000 4000 6000 8000 10000 12000 Redmine3.0 Redmine2.6 10万 20万 30万 50万 70万 100万 150万 200万 ・Redmine 2.6 から 3.0 へのアップデートによ り、平均で7.4 %の性 能向上が得られる ・Rails4.2への変更に 伴うMultiThread ・Rails4.2の内部改善 Redmine3.0は速いのか ms
    • 90. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果3 90 RedmineのRubyバージョン変更の効果 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.2.2 8G_Ruby2.1.6_OOBGC 8G_Ruby2.0.0 Redmine3.0 10万 20万 30万 50万 70万 100万 150万 200万 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.1.6_OOBGC 8G_Ruby2.0.0 Redmine2.6 10万 20万 30万 50万 70万 100万 150万 200万 ms ms
    • 91. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果3 91 RedmineのRubyバージョン変更の効果 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.2.2 8G_Ruby2.1.6_OOBGC 8G_Ruby2.0.0 Redmine3.0 10万 20万 30万 50万 70万 100万 150万 200万 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.1.6_OOBGC 8G_Ruby2.0.0 Redmine2.6 10万 20万 30万 50万 70万 100万 150万 200万 ・Redmine3.0は、Ruby2.0か Ruby2.2へアップデートすると 平均で 20.8% 性能が向上する ms ms
    • 92. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved ベンチマーク|計測結果3 92 RedmineのRubyバージョン変更の効果 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.2.2 8G_Ruby2.1.6_OOBGC 8G_Ruby2.0.0 Redmine3.0 10万 20万 30万 50万 70万 100万 150万 200万 0 2000 4000 6000 8000 10000 12000 14000 8G_Ruby2.1.6_OOBGC 8G_Ruby2.0.0 Redmine2.6 10万 20万 30万 50万 70万 100万 150万 200万 ・Redmine3.0は、Ruby2.0か Ruby2.2へアップデートすると 平均で 20.8% 性能が向上する ・Redmine2.6は、Ruby2.0か Ruby2.1へアップデートすると 平均で 24.8% 性能が向上する ms ms
    • 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の保存・読込機能によって 待ち時間が大幅に短縮される。
    • 124. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 設定例1)基本S/W 124 OS, FileSystem <OS> CentOS 6 プロセス、パッケージは必要最低限に削ぎ落とす。 (パッチ適用、最少の停止頻度、セキュリティー、メモリ) <FS> Ext4 nobarrier チューン http://goo.gl/LYwfA0 /dev/mapper/vg_sms01-lv_root / ext4 defaults,nobarrier 1 1 UUID=f94716b2-52d4-4e81-9a82-3c4b13608671 /boot ext4 defaults 1 2 /dev/mapper/vg_sms01ex-lv_opt /opt ext4 defaults,nobarrier 1 2 /dev/mapper/vg_sms01-lv_swap swap swap defaults,nobarrier,discard 0 0
    • 125. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 設定例2)ミドルウェア 125 DBMS, WebServer, Web Application Server <DBMS> メモリチューニング (MySQL 5.5, 5.6用、Postgresql) SSDによるI/O改善 200万チケットのDBダンプリストア。SSDが33%向上(5 分速く終わる) <WebServer> - 通信圧縮 Compress, Gzip, Deflate 圧縮 <Web Application Server> - weblick は性能 × - 運用の容易さは Unicorn <<<< Passenger 。決定的な違い。 - Phusion Passenger 3 → 4 → 5 で○○%向上 - Passenger 5 で OOGBC を動作させられなかった。Exceptionが出る。 → 現状、Passenger4, Ruby2.1, OOGBC(gctools)が最速・安定 - Enterprise の MTモードで○○% 向上(?) Licenseは 5000円/月程度
    • 126. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 設定例3)応用S/W 126 Ruby, OOBGC, Redmine, VCS <Ruby> - GCの大幅改善により、2.2系が最速と思われがちだが、次点。 2.1系+OOBGCが最速。(調査時点 2015/05/07 ) - OOBW-GC、OOBGC の問題が付いてくる。Ruby2.2が総合的に見て最適。 <Rails> - Rails4の性能向上効果 (ホントに向上している?) <Redmine> - カスタムフィールドの設定値「フィルタとして使う」の数を減らす。 「14万チケットだと、フィルタ30種 ○○秒 → フィルタ 5種 〇秒」 - メール非同期送信(Async) <VCS> - Subversion 1.7のセッションキャッシュ付与機能 - Subversion 1.xの通信圧縮機能
    • 127. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 目次 127 第1部 背景と要求 第2部 チューニングの基本 第3部 ベンチマーク 第4部 性能改善事例集 第5部 まとめ (質疑応答) 127
    • 128. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved 目次 128 第1部 背景と要求 第2部 チューニングの基本 第3部 ベンチマーク 第4部 性能改善事例集 第5部 まとめ (質疑応答) 128
    • 129. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved お話ししたこと 129 1)200万チケットでもサクサク動くRedmineの全レシピ →詳細設定は後日、Slideshareで公開します 2)Redmine2.6 を 3.0 へUpdateすると平均で7.4%速くなる 3)Redmine3.0で、Ruby2.0 を 2.2 へUpdateすると平均で20.8%速く なる
    • 130. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved お話ししたこと 130 1)200万チケットでもサクサク動くRedmineの全レシピ →詳細設定は後日、Slideshareで公開します 2)Redmine2.6 を 3.0 へUpdateすると平均で7.4%速くなる 3)Redmine3.0で、Ruby2.0 を 2.2 へUpdateすると平均で20.8%速く なる 4)HDDをSSDに変更すると平均で25.7%速くなる 5)Redmineチューニング事例 10種 6)全走査型の全文検索は10万チケットで性能限界に到達する
    • 131. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved まとめ|実際 131 (難易度 又は、データ規模順で解説します) ・初期値のままでは1万件で使い物にならなくなる。 ・最低限のチューニングで 5万件まで使える。(Windows Bitnami) ・最低限のチューニングで10万件まで使える。(Linux,MySQLorPostgresql) ・目一杯のチューニングで 200万件まで使える。(Linux,MySQLorPostgresql) ・最大限のチューニングは忙しいのでやっていない。 (Linux, MySQL or Postgresql:ロードバランサ+WebAppServerクラスタリング + DBMS- R/W、R/O分離 + SSD PCIe )
    • 132. Copyright (C) Shimadzu Business Systems Corporation. All Rights Reserved まとめ|限界 132 1. Redmineの機能強化 → CPU, SSD, Ruby, Railsによる性 能向上分を消費した。有効な策はRedmineコアの内部 2. RedmineのFTS → 10万件の時点で極めて遅く、同時並 行検索(コア数=並行数)だけでRedmineはフリーズす る。制限をかける方法は無い。抜本対策が無ければ、 Redmineを使い続ける事が難しくなってしまう。 3. JPLが Proof of Conceptを終えているという爆速検索 (数ms)が頼みの綱。恐らく、Postgresql 9.3の Materialized View を使用し、act_as_searchable を数十行 書き換えることで実現するアイデアと思われる。

    ×