20130925 alfresco study18performancetuning

16

Click here to load reader

Upload: takeshi-totani

Post on 31-May-2015

502 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 20130925 alfresco study18performancetuning

とたに

2013©

Alfresco勉強会#18パフォーマンスチューニングのさわり

2013年9月25日

Page 2: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

前口上

2

チューニングやサイジングって●環境ごとに正解が異なる●ノウハウとして囲い込みたいなどがあり、情報があまり流通していない

今日のゴール●Alfrescoのパフォーマンスチューニングのレバーがどれぐらいあるかを理解する。

Alfresco version●Alfresco Community Edition 4.2c●多分4.2dでも通用すると思います

Page 3: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

システムのパフォーマンスとは

3

パフォーマンスの定義●信頼性●経済性●性能●... etc → パフォーマンスチューニングと言う場合には、”性能”を指している(はず)

“性能”とはシステム: インタラクティブ + 中央集権的な処理モデルの場合、ある使用状況(負荷)下でのスループット(1秒間あたりに処理可能なトランザクション/イベント数)目標値はSLAで締結...

Page 4: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

スループット向上の考え方

4

対処すべきイベント

発生頻度

処理時間

Page 5: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

対処すべきイベント種類の一般的な特徴

5

処理内でI/Oを伴う●ファイルの読み出し/書き出し●RDBMSアクセス●REST API連携など大量の”待ち”が発生

計算量が多い●色々ありますよね

データ転送量が多い●データ転送時間がボトルネックとなる

Page 6: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

Alfrescoの場合に対象となるイベント

6

•ほとんどのAPIで使用されるRDBMS問い合わせ•コンテンツ変換の際のOpenOffice連携

•コンテンツの登録/読み出し•Luceneインデックスの更新/読み出し

(Solrを使用している場合)

•Solrインデックスへの問い合わせ•クライアントとのデータやり取り

外部連携 ファイルI/O データ転送量

•Lucene使用時の検索後の参照権限解決処理•Lucene/Solrインデックスの検索処理

計算量が多い

Page 7: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

ざっくりの対処法

7

RDBMSへの問い合わせ ファイルI/O データ転送量

(コネクションプーリング)

問い合わせ結果をキャッシュ(Ehcache)

OSのディスクキャッシュキャッシュ(lucene用)

Webサーバによるリソースのキャッシュ

ネットワーク容量の強化

計算量が多い

CPU増やすクラスタリング

Page 8: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

チューニングポイント① JVMメモリ

8

設定可能なメモリ領域ヒープ領域 パーマネント領域

セッションごとの使用領域

オブジェクトキャッシュ(EhCache)

Luceneインデックス

Alfrescoコード+ コンパイルされたjsの

コード

バッファ

寿命が短いNew領域内に収めたい

比較的寿命が長いOld領域に割り当てたい

JConsole等で実測しながらヒープ容量を決める

Page 9: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

チューニングポイント② OSメモリ

9

OSメモリサイズの概算割当済 未割当

Alfresco on AppServer

その他のプロセス

カーネル

ディスクキャッシュとして利用可能

ディスクキャッシュに載せたいファイル

●Luceneインデックスファイル●(RDBMSを同一サーバで動作させている場合)データファイル

上記ファイルの全部がキャッシュに載るのが理想

Page 10: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

参考:Ehcacheの設定

10

設定方法●alfresco-global.propertiesで初期値を変更可能●cache.*.maxItemsの設定項目

Enterpriseならキャッシュの使用状況をログ出力することができます...

cache.propertyValueCache.maxItems=10000cache.contentDataSharedCache.maxItems=130000cache.immutableEntitySharedCache.maxItems=50000cache.node.rootNodesSharedCache.maxItems=1000cache.node.allRootNodesSharedCache.maxItems=1000cache.node.nodesSharedCache.maxItems=250000cache.node.aspectsSharedCache.maxItems=130000cache.node.propertiesSharedCache.maxItems=130000cache.node.parentAssocsSharedCache.maxItems=130000cache.node.childByNameSharedCache.maxItems=130000....

グループ(authority)のようなあまり変更がないオブジェクトは全数がキャッシュに載るように必要に応じてサイズを上げる

Page 11: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

参考:Luceneの設定

11

設定方法●alfresco-global.propertiesで初期値を変更可能●lucene.indexer.*の設定項目

lucene.indexer.cacheEnabled=truelucene.indexer.maxDocIdCacheSize=10000lucene.indexer.maxDocumentCacheSize=100lucene.indexer.maxIsCategoryCacheSize=-1lucene.indexer.maxLinkAspectCacheSize=10000lucene.indexer.maxParentCacheSize=10000lucene.indexer.maxPathCacheSize=10000lucene.indexer.maxTypeCacheSize=10000...

正直、それほど変更したことはない...

Page 12: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

検索後の権限チェック

12

権限チェックの上限値を変更●権限チェックの上限数●権限チェックにかかる上限ミリ秒

設定方針

検索結果が多い場合には、検索処理よりも時間がかかる処理ページングする場合も初期ページ分の検索結果に対して権限チェックが発生

●ページング込みで検索などで表示する件数から件数の上限値や上限時間を設定しておき、全体の処理速度を低下させないようにする。

system.acl.maxPermissionChecks=1000system.acl.maxPermissionCheckTimeMillis=10000

Page 13: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

プラスα

13

使わない機能の無効化●OpenOffice●コンテンツの変換に使用●強力だが当然メモリやCPUの消費もそれなりに激しい

ooo.enabled=falsealfresco-global.properties

Page 14: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

まとめ

14

いまさらですが●パフォーマンスチューニングは、ユースケースに応じて検証しながら決めましょう。

●(単体の)Alfrescoのチューニングは●メモリをどう割り当てるかがチューニングの中心

●未割当メモリにも意味あり。ディスクキャッシュ重要!

Page 15: 20130925 alfresco study18performancetuning

2013.09..25 2013 ©

リファレンス

15

今日紹介しなかったクラスタリングなどは下記を参照下さい

•Alfresco wiki•http://wiki.alfresco.com/wiki/Repository_Cache_Configuration•クラスタリング•http://www.slideshare.net/mryoshio/alfresco-cluster

Page 16: 20130925 alfresco study18performancetuning