パフォーマンスに関する設定

パフォーマンス云々語る前にDotNetNukeを簡単におさらい。
DotNetNukeは、ポータルサイトを構築するためのフレームワークです。
一般的にはContents Managemnet System(CMS)の分野に属するソフトウェアになります。

通常Webサイトは、HTMLを記述しページを作成していきますが、
DotNetNukeを使うとHTMLの記述をほとんどしなくても、
ブラウザ上でモジュールと呼ばれるページの部品を組み合わせてページを作成し、
ポータルサイトを構築できます。
Microsoft技術で言うと、Windows SharePoint Service(WSS)が該当する技術になると思います。

WSSもそうなんですけど、ページのコンテンツはWebサーバ上にHTMLとして保存されません
部品の情報としてDBに保存されます。ページの要求が発生するとDBから部品の情報を取り出し、
ページとして組み立ててクライアントへ応答するのが基本動作となります。

つまりは、アーキテクチャ上DBに負荷が集中する構造となっているわけです。
こういう場合のパフォーマンスチューニングで最初に考えなければいけないのは、
いかにDBの負荷を軽減できるか、ということになります。
そこで、

  • キャッシュを使ってDBへのアクセスを減らす
  • ロギングのようにページ要求のたびに毎回実行される処理を出来るだけ減らす

という2点がパフォーマンスを向上させるために重要となります。
前置きが長くなりましたが、DotNetNuke
パフォーマンスに関係する設定を下に書きとめておきます。

■ Enable Event Log Bufferの有効化
Host Settings > Advanced Settings > Other Settings > Enable Event Log Buffer
デフォルトでDNNは、DBにログを記録するようになっているようです。
ページにアクセスするたびにDBに書き込みしてたじゃ遅くなって当たり前です。
この設定を有効化すると、DBに書き込む前に一度メモリ上にログ情報をバッファするようになります。
つまりは、DBへのアクセス数も減らすことができるわけです。
実際にやってみたら一番パフォーマンス効果の高い設定でした。
(なんでデフォルトではOFFになってるんだろう??)

■各モジュールのキャッシュの設定
モジュールのSettings > Page Settings > Cache Time
バナーやリンクなどの各モジュールの設定に、
モジュール単位でのキャッシュ時間(秒)の設定があります。
これもデフォルトは0秒(キャッシュしない)設定になっているようなので、
適切な秒数に調整してあげましょう。
これでまたDBへのアクセス数を軽減することができます。

まだ、全てを確認できているわけじゃないですが、
いまのところ判明したパフォーマンスに関係する設定をまとめてみました。
早くDotNetNukeの本来ないかなぁ。。。