lotus domino webサーバーのパフォーマンス・...

64
© 2008 IBM Corporation ® Lotus Domino Web サーバーのパフォーマンス・チューニングと 問題判別 Lotus Technical Update Workshop 2010/4/8 ISE Workplace, Core Collaboration Group 村上 雄介

Upload: others

Post on 31-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

© 2008 IBM Corporation

®

Lotus Domino Web サーバーのパフォーマンス・チューニングと問題判別

Lotus Technical Update Workshop 2010/4/8ISE Workplace, Core Collaboration Group

村上雄介

Page 2: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

特記事項

本資料の記載内容は、正式な IBM のテストやレビューを受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。

掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する事はご遠慮ください。

本資料の著作権は日本アイ・ビー・エムにあります。非営利目的の個人利用の場合において、自由に使用してもかまいませんが、営利目的の使用は禁止させていただきます。

IBM, AIX, Lotus, Lotus Notes, Lotus Domino は Internal Business Machines Corporation の米国およびその他の国における商標。その他、記載された社名および製品名は、それぞれ各社の商標または登録商標です。

Page 3: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

Agenda

Web サーバーのアーキテクチャ基本の理解

Lotus   Domino Web サーバーにおける、パフォーマンス設定の考慮ポイント

パフォーマンス問題が発生した場合

HTTP の問題判別の支援ツールご紹介

このセッションの目標:

• Web アーキテクチャの基本を理解する。 • Lotus Domino Web サーバー設定のパフォーマンスへの影響ポイントを理解する。• Lotus Domino Web サーバーの簡単なパフォーマンス問題判別が出来る• 一般的な HTTP の問題に関して、ツールを使った簡単な問題判別が出来る

このセッションの目標:

• Web アーキテクチャの基本を理解する。 • Lotus Domino Web サーバー設定のパフォーマンスへの影響ポイントを理解する。• Lotus Domino Web サーバーの簡単なパフォーマンス問題判別が出来る• 一般的な HTTP の問題に関して、ツールを使った簡単な問題判別が出来る

Page 4: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

4

Web ブラウザと Web サーバーの関係

Web クライアント

Web ブラウザ

Web サーバー

プロトコル: HTTP(S)

リクエスト・メッセージ

レスポンス・メッセージ

ヘッダー

ボディ

Web サーバーに対する要求内容などの情報が記述されている

クライアント側から送信するデータWeb 情報の要求の場合などは空となる

ヘッダー

ボディ

Web サーバーの応答内容などの情報が記述されている

Web サーバーから返信するデータ。HTML や画像データなど

Page 5: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

5

リクエスト・メッセージ

Web ブラウザから Web サーバーに HTML ソースコードや画像ファイルなどの転送を要求するときに送信されるメッセージ

ヘッダー

ボディ

GET /homepage/index.html HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)Accept: */*Accept-Language: jaAccept-Encoding: gzip, deflateHost: www.aaa.co.jp

リクエスト・メッセージ例

•リクエスト・ライン:•メソッド+•リクエスト先の URL +HTTP バージョン

•リクエスト・ヘッダー:•Accept:• 対応可能なメディアの形式•Accept-Language:• 対応する言語•Accept-Encoding:• 対応可能なエンコード(圧縮)形式•Host:• 要求先のサーバ名。 HTTP1.1 から必須となった項目

メソッドには、以下のようなものがある。GET : ファイルの転送要求やデータ検索要求POST : 特定のデータを Web サーバへ転送PUT : Web サーバ上の指定したファイルを更新DELETE : Web サーバ上の指定したファイルを削除

Page 6: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

6

レスポンス・メッセージ

Web ブラウザから送信されたリクエスト・メッセージに対する、 Web サーバーからの応答として送信されるメッセージ

ヘッダー

ボディ

HTTP/1.1 200 OKServer: Lotus-DominoDate: Tue, 09 Mar 2010 02:33:17 GMTContent-Length: 434Content-Type: text/htmlLast-Modified: Wed, 19 Sep 2007 00:33:18 GMT

<html><head><title>My Page</title></head><body>・・・・・・・・・・・・・・・・・・・・・・

レスポンス・メッセージ例

•ステータス・ライン:•HTTP バージョン+•ステータス・コード+•ステータスの内容

•レスポンス・ヘッダー:•Date: 日時•Content-Length: ボディのデータ長(バイト)•Content-Type: ボディのファイルタイプ•Last-Modified: 最終更新日時

•ボディ:•Web サーバーから返信するデータ。 HTML など

ステータス・コードには、以下のようなものがある。200 : OK (処理成功 )202 : Accepted ( リクエストを受け付けたことを通知 )400 : BadRequest ( リクエスト・メッセージに誤りがある )404 : Not Found ( 要求されたファイルがない )500 : Internal Server Error (Web サーバのエラー )

Page 7: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

7

Web サーバーの役割とは?

Web サーバーは、クライアント (Web ブラウザ)からの要求を受け取り、必要なデータを HTML などの形でクライアント側へ転送する役割を担っています。

Web サーバー

Web ブラウザ

① URL を指定して HTML ソースを要求

② Web ページの HTML ソースを送信

ようこそ、私のホームページへ!

ようこそ、私のホームページへ!

③ 受信した HTML ソースを解析し、文字情報を表示した後、画像を表示する記述があれば画像データを要求

④ 画像データを転送

Page 8: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

8

静的 Web ページと動的 Web ページ

Web クライアント

静的 Webページ処理

動的 Web ページ処理

Web クライアント

Web サーバー

Web サーバー (Lotus Domino)

Web 情報の要求

HTML ソースや画像データなどの転送

処理すべきデータの送信

処理を実行するため Web アプリケーション・サーバ上のプログラム実行

実行結果を表示するために動的にHTML ソースを作成

処理結果を HTMLで転送

Page 9: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

Lotus Domino Web サーバー動作の概要

Domino サーバー

HTTP

DominoWeb

Engine

HTTP リクエスト

HTTP レスポンス(主に HTML )

CSS

JS

HTML

表示・実行 DB

DomLog

HTTPLog

HTML設計

文書

DBの設計と文書データから、Dominoサーバーが HTMLを動的に生成し、ブラウザに返信する

DBの設計と文書データから、Dominoサーバーが HTMLを動的に生成し、ブラウザに返信する

Webクライアント

Page 10: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバーのパフォーマンスとは

パフォーマンスの考え方– 時間的側面:問題のないレスポンスタイムが提供出来る– 容量的側面:同時に処理出来るリクエスト数、ユーザーアクセス数など

– 良好なパフォーマンスのために

– サーバーの処理量を少なくする• 不要な処理を減らす

– サーバーでの処理を多重化する• 余っているリソースを有効活用する

– ・・・・・

–– サーバーリソースを増やす

• 最後の手段・・・

このセッションでのターゲット

このセッションでのターゲット

Page 11: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

パフォーマンスに影響する要素とは

リソースの問題– サーバー– クライアント– ネットワーク

Lotus Domino サーバーの設定– Lotus Domino サーバー全般に関わる設定– Lotus Domino Web サーバー (HTTP タスク ) に関する設定

アプリケーションデータベースの設計– DB プロパティ– Web アプリケーションとしてのデザイン

アプリケーションデータ– 文書– 添付ファイル

このセッションでの主なターゲット

このセッションでの主なターゲット

Page 12: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: HTTP スレッド (1)

Lotus Domino サーバーの HTTP スレッド数(同時リクエスト処理数)を調整する– デフォルトのスレッド数は “ 40” ( サーバー文書 )– サーバーリソースに余裕がある場合、通常以下の数値までは増やすことが可能

• 単一プロセッサーを搭載したサーバー: 64• 複数プロセッサーを搭載したサーバー: 80

– スレッド数を増やす場合は、少しずつ ( 例: 10 ずつ )増やしていくことを推奨

–– 現在のスレッド数で余裕があるかどうかは、以下

の統計値 (show stat) で判断が可能• Domino.Threads.Active.Peak

– この統計値は、” NSF”系の処理のみをカウントするため、完全な意味でのスレッド利用数とは異なります。

• HTTP.PeakConnections– この統計値は、「接続数」のため、スレッド数を上回る可能性

があります。( Domino.Threads.Active.Peak はスレッド数)

Page 13: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: HTTP スレッド (2)

Lotus Domino サーバーの HTTP スレッドモデルを調整する

– HTTP リクエストが、どのスレッドによって実行されるかを調整する

– notes.ini の HTTPQueueMethod パラメータを設定する

– (=0). HTTP Worker スレッドへラウンドロビン形式で割り振り ( デフォルト )

– (=1). HTTP Worker スレッドの中で一番ネットワーク接続数の少ないものに割り振り

– (=2). ネットワークバッファ上にキューイングし、 HTTP Worker スレッドがネットワークバッファからリクエストを取得

– HTTP Worker スレッドへ直接割り振る場合、前のスレッド処理時間が長いと他のスレッドに空きが出来ても処理を待ち続ける。

– 確実にリクエスト順に処理させたい場合は、 HTTPQueueMethod=2 とし、一度ネットワークバッファを経由する必要がある。(同時に HTTP の持続的接続も無効にすることを推奨)

• 負荷分散装置からの、生存確認リクエストへの応答など

・・

スレッド 1

スレッド 2

スレッド n

HTTPListner

スレッドでキューイング (=0, =1) すると、1 リクエストあたりの負荷のばらつきによっては、スレッドごとの負荷に偏りが出来、他に空きスレッドがあっても有効活用出来ない可能性がある

スレッドでキューイング (=0, =1) すると、1 リクエストあたりの負荷のばらつきによっては、スレッドごとの負荷に偏りが出来、他に空きスレッドがあっても有効活用出来ない可能性がある

スレッド 3

Webクライアント

リクエスト

Page 14: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: HTTP 持続的接続

ステートレスな HTTP プロトコルにおいて、ネットワーク接続確立のオーバーヘッドを緩和する機能 (HTTP1.1 keep-alive)– Web サーバーとブラウザとの間で、 1回のコネクション確立後、同じ接続を使っ

て複数回のリクエストが行える機能(接続確立・解放の負荷を軽減する)– Lotus Domino では、デフォルトは「有効」 (サーバー文書: [インターネットプロトコ

ル ]-[Domino Web Engine] )

HTTP 持続的接続を利用するかどうかの判断材料– コネクション確立のオーバーヘッドは、一般的に低速回線の場合影響が大きく

、高速回線では影響が小さい。– 同時アクセスクライアント数が非常に多いと、確立した接続が残りすぎてしまい

、新しいセッションの確立に対するオーバーヘッドが生じる可能性がある。• Web ブラウザの同時接続数が非常に多い場合

– 前ページ HTTPQueueMethod=2 を利用する場合は、「無効」を推奨

Page 15: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: Web エージェントの同時実行

Web エージェントを同時実行する– デフォルトは同時実行が無効(サーバー文書: [ インターネットプロトコル ]-

[Domino Web Engine] )

– 同時実行を有効にすると、個々の Web エージェントが、 HTTP タスクのスレッドを使い同時実行される。(WebQueryOpen, WebQuerySave, OpenAgent など)

– 実行時間の長いエージェントが同時に多数実行されると、 HTTP スレッドを占有し、その他のレスポンスに影響があるため注意。(一方、同時実行しない場合は、エージェントの実行待ちが多数発生する)

– 多数のエージェントによるサーバーへの過負荷の影響に対して、タイムアウト値を設定することが可能。• ただしタイムアウトの場合は、ユーザーに「 HTTP Web Server: エージェントが設

定された時間内に完了しませんでした」という 500 エラーが出力される。

–デフォルト無効のため、 Web アプリケーションサーバーのパフォーマンスに注意が必要

デフォルト無効のため、 Web アプリケーションサーバーのパフォーマンスに注意が必要

重要!重要!

Page 16: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: HTTP ログ (1)

HTTP ログの書き込み量を調整し、書き込み負荷を低減する。

ログの取得は 2種類の方法が設定可能。テキスト形式を推奨。– サーバー文書[インターネットプロトコル ]-[HTTP]で設定する。– Domlog.nsf形式は非推奨(索引処理負荷、 DB サイズなどの観点よ

り)– 本番環境で HTTP ログが必要な場合は、テキストログファイルを推奨

ログ除外対象のフィルタ活用– サーバー文書[インターネットプロトコル ]-[HTTP]で設定する。– ログ書き込み量を減らし、サーバー負荷、ログサイズを軽減する。– *.gif など、 URL パターンでの除外の実施– image/gif など MIME タイプでの除外の実施

デフォルトではいずれも無効。 HTTPログを取得する場合は、「ログファイル」の利用を推奨。

デフォルトではいずれも無効。 HTTPログを取得する場合は、「ログファイル」の利用を推奨。

実際のログの書き込みをヒントに、ログが不要なリクエストはフィルタしてもよい。

実際のログの書き込みをヒントに、ログが不要なリクエストはフィルタしてもよい。

Page 17: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: HTTP ログ (2)

テキストログ形式は、「共通」「共通(拡張)」の 2種類が存在– サーバー文書[ インターネットプロトコル ]-[HTTP] で設定する– ファイルシステムにテキストファイルとして記録されるため、メンテナンスが必要– 以下の 8-12 は「共通 (拡張 ) 」を設定した場合のみ出力(ただし、 8, 9 は「共

通」の場合、分割されたファイルに別途保存される。) 1. クライアント DNS 名、または DNS 名が利用不可の場合は IP アドレス

2. 要求のホストヘッダー、またはサーバーの IP アドレス (ホストヘッダーが利用不可の場合)

3. リモートユーザー (利用可能な場合)

4. 要求のタイムスタンプ

5. HTTP 要求行

6. HTTP 応答のステータスコード

7. 要求の内容の長さ。利用不可の場合は「-」で表示。

8. 参照 URL。利用不可の場合は「-」で表示。

9. ユーザーエージェント。利用不可の場合は「-」で表示。

10 .要求を処理する時間 (ミリ秒)

11. cookie ヘッダーの値

12. 変換された URL (実際のサーバーリソースのフルパス、利用可能な場合)

リクエスト処理時間の出力が、パフォーマンス問題発生時に役立つ

リクエスト処理時間の出力が、パフォーマンス問題発生時に役立つ

Page 18: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

( 参考 )HTTP ログフォーマット

「共通」フォーマット

– この他に、参照 URL 、ユーザーエージェントのログファイルに、別途記録され

る。

「共通(拡張)」フォーマット– 1 リクエストに対するログ量が増える(特に Cookie のサイズが大きい可能性

がある)ため、ログサイズに注意

192.168.1.7 elephant.iikura.japan.ibm.com - [25/Jan/2010:13:04:27 +0900] "GET /mail/aelephan.nsf HTTP/1.1" 200 4356

192.168.1.7 elephant.iikura.japan.ibm.com - [25/Jan/2010:13:04:27 +0900] "GET /mail/aelephan.nsf HTTP/1.1" 200 4356

192.168.1.7 elephant.iikura.japan.ibm.com "CN=Admin Elephant/O=MISE85" [31/Mar/2010:18:29:29 +0900] "GET /mail/aelephan.nsf HTTP/1.1" 200 1825 "" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2" 4953 "cookie...." "d:/lotus/domino/data/mail/aelephan.nsf"

192.168.1.7 elephant.iikura.japan.ibm.com "CN=Admin Elephant/O=MISE85" [31/Mar/2010:18:29:29 +0900] "GET /mail/aelephan.nsf HTTP/1.1" 200 1825 "" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2" 4953 "cookie...." "d:/lotus/domino/data/mail/aelephan.nsf"

Page 19: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: DNS 参照

DNS 参照を無効にする– 有効にした場合、 HTTP ログに記録される IP アドレスが、 DNS を参照

の上ホスト名として記録される。– パフォーマンスの観点から、無効にすることを強く推奨(デフォルト無効)

無効

有効

重要!重要!

Page 20: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定:最大投稿データサイズ

添付ファイルなど、投稿 (=POST) 可能な最大データを定義– サーバー文書[インターネットプロトコル ]-[Domino Web Engine]で

設定する– よくある設定は 10MB 。予期せぬユーザー操作による、サーバーパフォーマ

ンス問題への事前対策として、無制限 (=0) での設定は非推奨。– Lotus iNotes の場合は、別途 iNotes の制限との兼ね合いあり。

• Lotus iNotes で送信可能な添付ファイルサイズは、サーバー設定文書の Lotus iNotes タブで定義したものがまずは使われる。

• Lotus iNotes におけるファイル送信サイズ制限は、この Lotus iNotes タブでの設定を推奨。(「 iNotes の最大値」≦「 HTTP の最大値」で設定する)

– 1 文書に添付ファイルが複数あった場合は、1つのファイルの最大値を表す

HTTPでの制限

HTTPでの制限

Lotus iNotesでの制限

Lotus iNotesでの制限

Page 21: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: 静的コンテンツへの gzip 圧縮の適用 (8.5 新機能 )

ファイルシステム上の静的コンテンツ (HTML, CSS などのファイル ) に対して、 HTTP1.1 の gzip圧縮機能を適用して転送することが可能– コンテンツは圧縮されてブラウザへ送信され、ブラウザは解凍して表示する。

通信負荷の低減に有効。

設定方法– 「元ファイル名 .gz 」という gzip圧縮ファイルを配置しておく。 (Lotus Domino

8.5)• Lotus Domino 8.5.1以降では、 gz ファイルが存在しない場合に動的生成して

配置させることも可能

– インターネットサイト文書で、細かい設定変更が可能。 (Lotus Domino 8.5.1 以降 )

考慮点– MIME Content-Type が、テキストファイル (text/*) 、アプリケーションファイル

(application/*) であるものに有効 (8.5.1 以降では設定可能 )

– ブラウザが HTTP1.1 対応であり、リクエストヘッダーに「 Accept-Encoding: gzip 」が含まれる必要がある(通常デフォルト)

– バイトレンジ転送には非対応

Page 22: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

Domino サーバー

Web ブラウザAccept-Encoding:gzip

HTTP レスポンス

静的ファイル静的

ファイル

Domino サーバー

Web ブラウザ

静的ファイル静的

ファイル

表示

解凍・表示

gz

データ/html/file.xxx

/html/file.xxx/html/file.xxx.gz

gzip 圧縮無効

gzip 圧縮有効

Accept-Encoding:gzip

Content-Enconding:gzipgz

静的コンテンツへの gzip 適用

gzデータがそのまま流れる

gzデータがそのまま流れる

ブラウザが解凍して表示

ブラウザが解凍して表示

事前配置 (8.5)自動配置 (8.5.1)

事前配置 (8.5)自動配置 (8.5.1)

Page 23: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

( 参考 ) 静的ファイルの gzip 圧縮例

サーバーからクライアントへの転送バイト数が圧縮効果で減少する。– 以下の例では、 2474 バイト⇒ 518 バイト

GET /test.html HTTP/1.1Host: elephant.iikura.japan.ibm.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: ja,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7Keep-Alive: 115Connection: keep-aliveIf-Modified-Since: Mon, 29 Mar 2010 23:48:26 GMTCache-Control: max-age=0

HTTP/1.1 200 OKServer: Lotus-DominoDate: Tue, 30 Mar 2010 09:10:48 GMTContent-Type: text/htmlContent-Length: 2474Last-Modified: Mon, 29 Mar 2010 23:48:26 GMTAccept-Ranges: bytes

GET /test.html HTTP/1.1Host: elephant.iikura.japan.ibm.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: ja,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7Keep-Alive: 115Connection: keep-aliveIf-Modified-Since: Mon, 29 Mar 2010 23:48:26 GMTCache-Control: max-age=0

HTTP/1.1 200 OKServer: Lotus-DominoDate: Tue, 30 Mar 2010 09:10:48 GMTContent-Type: text/htmlContent-Length: 2474Last-Modified: Mon, 29 Mar 2010 23:48:26 GMTAccept-Ranges: bytes

GET /test.html HTTP/1.1Host: elephant.iikura.japan.ibm.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: ja,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7Keep-Alive: 115Connection: keep-aliveIf-Modified-Since: Mon, 29 Mar 2010 23:48:26 GMTCache-Control: max-age=0

HTTP/1.1 200 OKServer: Lotus-DominoDate: Tue, 30 Mar 2010 09:11:38 GMTContent-Type: text/htmlContent-Encoding: gzipContent-Length: 518Last-Modified: Mon, 29 Mar 2010 23:48:26 GMT

GET /test.html HTTP/1.1Host: elephant.iikura.japan.ibm.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: ja,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7Keep-Alive: 115Connection: keep-aliveIf-Modified-Since: Mon, 29 Mar 2010 23:48:26 GMTCache-Control: max-age=0

HTTP/1.1 200 OKServer: Lotus-DominoDate: Tue, 30 Mar 2010 09:11:38 GMTContent-Type: text/htmlContent-Encoding: gzipContent-Length: 518Last-Modified: Mon, 29 Mar 2010 23:48:26 GMT

gzip圧縮無効 gzip圧縮有効

Page 24: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定: Web サーバーへの gzip の適用 (8.5.1 新機能 )

Lotus Domino Web サーバーの出力に対して、 gzip圧縮を適用することが可能。(任意の文書、出力コンテンツに対して、動的に gzip圧縮する)

インターネットサイト文書で設定– gzip 適用対象、除外対象の MIME タイプが設定可能– 圧縮の有効性が低い種類のファイルは、除外したほうがよい

(例: application/pdf  など)

サーバー、クライアントの CPU処理能力、ネットワーク転送量とのトレードオフ

Page 25: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

サーバー設定:不要なモジュールのロードを停止する

DSAPI フィルタ– DOLS など利用しない場合

Domino Servlet Manager– DJX Web アドレス帳サーブレットなど利用しない場合

XML サービス– WebSphere Portal の PIM ポートレットを利用しない場合

Page 26: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

アプリケーションデータベースの最適化

アプリケーション設計によるパフォーマンスへの影響は大きい

主な考慮点– Web エージェントの多用を避ける

• OpenAgent 、 WebQueryOpen の多用を極力避ける

– フォーム上での計算量を減らす• 複雑な計算結果フィールドなどを避ける• @DBLookup の最適化

– Notes/Web ハイブリッドタイプを利用時の、非表示プロパティ• 設計要素を Notes と Web で分割することが推奨

– JavaScript を活用した操作性• サーバーサイドでの処理をクライアント処理とすることによる、快適な操作性の

提供

– 読者フィールドとビュー• 読者フィールドを多用しているビューは、 Web アプリケーションにおいても大き

なサーバー負荷

重要!重要!

Page 27: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

アプリケーション:データベースプロパティ

未読マークを使用しない– 一般的に、 Web アプリケーションでは、未読機能を利用しないため。

(Lotus iNotes を除く )– Lotus Notes クライアントと、 Web ブラウザの両方からアクセスするタイプ

のアプリケーションでは、未読機能を利用する可能性もあるため注意– 有効にした場合、エージェントの実行時間

に影響がある場合がある。

Page 28: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

アプリケーション: expires ヘッダの利用

変更が一切発生しないファイル(例:アイコン画像など)を、 Web ブラウザにキャッシュし、サーバーへのリクエスト自体を発生させない。– サーバーが処理するリクエスト数が減少する– 万が一、変更が必要になった場合は、ファイル名を変更するなり、再

キャッシュをさせる必要がある

Web サイトルール文書で設定を行う– キャッシュさせる URL パターン、 HTTP 応答コードに対して、キャッシュ期

間を設定する

Page 29: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

アプリケーション:リクエスト数の削減

Lotus Domino サーバーへの、不要な HTTP リクエスト数を減らす

アプリケーションの表示を集約したポータルページでは、 1 回のポータルページへのリクエストから、ポートレット数分の接続要求が発生する。– 特にポータルのトップページでは、本当に必要なポートレットのみを配置し

、バックエンドの負荷を軽減するように工夫する。

エージェント呼び出し

掲示板 1

エージェント呼び出し

掲示板 2

メール

ポータルページ

Lotus Domino1枚のポータルページから、バックエンドへ複数本のリクエストが発生

1枚のポータルページから、バックエンドへ複数本のリクエストが発生

Page 30: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

アプリケーションデータ:添付ファイルの非圧縮

添付ファイルは、 Lotus Notes 標準の圧縮機能を利用しないことを推奨– 圧縮されて添付されたファイルは、 HTTP1.1 のバイトレンジ転送が提供

されない。– 圧縮された添付ファイルを、 Lotus Domino Web サーバーは一時的に展開して各 Web クライアントに提供するため、サーバーに過剰負荷が発生する。

Lotus Notes クライアントで添付ファイルを作成すると、デフォルトで添付ファイルが自動的に圧縮されるため注意– Lotus Notes クライアントでコンテンツを作成し、 Web で情報提供する

場合は、コンテンツ作成者のオペレーションに注意が必要– Lotus Notes クライアントの添付ファイル作成メニューで「 compress 」オ

プションを外す必要あり

ファイル添付時に、チェックを外す必要あり

ファイル添付時に、チェックを外す必要あり

バイトレンジ転送:HTTP1.1の機能で、 Rangesに関する HTTPヘッダを使い、接続途中のエラーなどでリソースが取得出来ないときに、その続きからをリクエスト出来る機能

Page 31: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

( 参考 ) 添付ファイルの圧縮について

データベースの設定に応じて、 Lotus Notes クライアントは添付ファイルを自動で圧縮する。圧縮結果は、文書プロパティで参照可能。

圧縮無効Webブラウザ向きのファイル格納方法

圧縮無効Webブラウザ向きのファイル格納方法

圧縮有効Lotus Notesクライアント向きのファイル格納方法

圧縮有効Lotus Notesクライアント向きのファイル格納方法

Page 32: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

HTTP

Web ブラウザ

サイズ大画像

サイズ小画像

GIF データ

アプリケーションデータ:リッチテキストイメージの最適化

リッチテキストフィールドに貼り付けるイメージサイズを最適化することを推奨– Lotus Notes クライアントから、ビットマップや Excel などのデータを貼り付けた場合に、文

書が非常に大きくなることがある。• Web の場合、画像データは、サーバー文書の設定に従い、圧縮された画像フォーマット(デフォ

ルトでは GIF) で送付されるため、ネットワーク負荷としては変わらない。• Lotus Domino Web サーバーの変換負荷軽減が目的

– Web コンテンツを作成する Lotus Notes クライアント上で、自動的に最適化することを推奨。• 対象となる Lotus Notes クライアントに、以下を設定する

– notes.ini パラメータ、OptimizeImagePasteSize=1 の設定

– Lotus Notes 8.5 以降の場合は、ユーザープリファレンスの「文書内に貼り付けた画像データを圧縮する」が有効になっていればよい(デフォルト)

流れるデータは減色フォーマット

流れるデータは減色フォーマット

同じ内容でもサイズが大きくなるかは、クライアントの設定次第

同じ内容でもサイズが大きくなるかは、クライアントの設定次第

Domino Webが変換する。サイズが大きいとメモリ読み込みなどの負荷影響が大きい

Domino Webが変換する。サイズが大きいとメモリ読み込みなどの負荷影響が大きい

Page 33: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

Lotus iNotes 特有のチューニング要素

基本的には、 Lotus Domino Web サーバーとしてのチューニングを実施– HTTP スレッド動作の調整、アイコンキャッシュ、 gzip圧縮のON/OFFなど

その他のチューニング項目– メールサーバーとしてのチューニング

• mail.box を複数用意する• 巨大なメールデータベース(特に受信ボックスフォルダ)に注意する

– iNotes 特有のチューニング• 子ウィンドウの再利用 (Lotus Domino Web Access 8.0.x まで )• プリフェッチ機能の有効化 (Lotus iNotes 8.5.1 新機能 / デフォルト無効 )

– iNotes_WA_PrefetchDocuments (=1 で表示している全未読文書、 =2で表示している全文書 )

• アラーム設定の解除 /間隔調整• 名前検索結果数の制限

– notes.ini iNotes_WA_NameLookupMaxNumMatch で調整(デフォルト 200 )

• タイプアヘッド関連パラメータ– notes.ini がいくつか存在(管理ヘルプ参照)

• 根本要素として、クライアント端末のスペックにも注意

Page 34: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

Lotus Domino Web 利用時に、是非確認しておきたいこと

サーバーの設定

– DNS参照はオフになっているか

– エージェントの同時実行は有効になっているか

– HTTPQueueMethod は、何を使うのがサイト運営に最適か( =2 にする必要があるか )

– HTTP ログの取得方法、運用方法は明確になっているか

– Collect タスク、もしくは定期的な show stat の実行など、今後の診断用のデータが取得されているかどうか

アプリケーションの確認

– データベースプロパティの未読オプションがオフになっているか

– ポータルページのポートレット数は、最適化されているかどうか

コンテンツの提供方法

– 提供コンテンツの作成は、 Lotus Notes クライアント /Web ブラウザのどちらから実施するか

– Lotus Notes クライアントで作成する場合は、作成する Lotus Notes の設定、および作成者への教育が行き届いているか

これとは別途、一般的な問題判別を容易にする環境の生成を推奨

– debug_threadid 、セマフォログ、コンソールログ

Page 35: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

パフォーマンス問題発生時の確認項目

基本的な切り分けを実施し、問題点を見極める。

サーバー、アプリケーションの場合は、問題を見極め、 Lotus Domino の設定・ DB 設計をチューニングする。

サーバーのリソース使用状況

サーバーの HTTP スレッド使用状況

特定 DB のみが遅いかどうか

別のロケーションからでも遅いか

ブラウザの Proxy を外しても遅いか

最新スペックのクライアントでも遅いか

別の種類のブラウザでも遅いか

特定操作のみが遅いかどうか

サーバーの問題

アプリケーションの問題

ネットワーク /proxy の問題

クライアント / ブラウザの問題

•その他•パフォーマンス問題発生前後でのシステム変更点•パフォーマンス問題発生の時間帯•発生時のアクション・再現性•などにも注目

Page 36: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

HTTP のスレッドの状態を確認する

コンソールから、 HTTP スレッドの現在の状態を確認する(スナップショット)– “tell http show thread state” を実行する– コマンド実行時の HTTP スレッドの処理状況が出力される– HTTP タスクの処理状態が把握出来る

• リクエストの多いデータベース• Web エージェントの処理状況• スレッドを使い果たしているかどうか

– 何回か実行して取得することを推奨> tell http show thread state2010/03/26 21:07:36 Http Worker Thread ID [fc8]: Working session [b]: Session State [Processing Request] : GET /test.nsf/WebTest?OpenAgent HTTP/1.12010/03/26 21:07:36 Http Worker Thread ID [1158]: [Thread State is Idle]2010/03/26 21:07:36 Http Worker Thread ID [1198]: [Thread State is Idle]2010/03/26 21:07:36 Http Worker Thread ID [23e4]: [Thread State is Idle]2010/03/26 21:07:36 Http Worker Thread ID [1dd8]: [Thread State is Idle]2010/03/26 21:07:36 Http Worker Thread ID [1b84]: [Thread State is Idle]2010/03/26 21:07:36 Http Worker Thread ID [27f8]: [Thread State is Idle]2010/03/26 21:07:36 Http Worker Thread ID [ed0]: [Thread State is Idle]・・・・(中略)・・・・・・・2010/03/26 21:07:36 Http Worker Thread ID [1c18]: [Thread State is Idle]2010/03/26 21:07:36 Http Logger Thread: Queued=[30], Written=[30], Last Pushback=[0 ms]

実行結果のサンプル

1つのスレッドで、エージェントが処理中

1つのスレッドで、エージェントが処理中

Page 37: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

レスポンスの悪いリクエストを把握する ( サーバー )

テキストログ(拡張)を解析し、レスポンスタイムの悪いリクエストを把握する。– テキストログの 10列目に、各リクエストのレスポンスタイム (msec) が記録

されている。– テキスト解析の出来るツールを使い、 10列目でソートすることで、レスポ

ンスタイムの悪いリクエストが把握可能• 専用ツールがなくても、表計算ソフトを利用し、スペースを区切り文字として

ログを読み込むことで解析可能

表計算ソフトを使った、レスポンスタイムの比較例

Page 38: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

レスポンスの悪いリクエストを把握する(クライアント)

特定の Web ページを閲覧するタイミングで、 Web ブラウザ側で時間測定が可能なツールを利用する。– 例: Firefox Firebug を使い、時間がかかるリクエストを把握する。

Page 39: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

処理の遅いエージェントの中身を解析する

明らかにエージェント処理の実行時間に問題がありそうなときに、エージェントの実行プロファイルを取得する

実行したエージェントの各メソッドに対し、コール回数・時間が記録される– エージェントの実行で、どの処理に時間がかかっているかを把握可能– Lotus Domino Designer でプロファイルを設定し、実行後に結果を表示する

実行結果のサンプル

Page 40: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

現場で出来る、 HTTP 問題判別

クラッシュ・ハングなどの問題– NSD ログ、 コンソールログ、セマフォログなどを取得の上、ロータスサポートへの

解析依頼を推奨

表示・実行エラー、ブラウザエラーなどの問題– 期待したように表示がされない– 類似のリクエストを投げた時の表示結果・動作結果が異なる– ブラウザ上でエラーが発生する。– ⇒これらの問題は、 HTTP/Web 関連の情報を取得することで、現場でも対

処が可能。• HTTP の送受信内容を確認する• HTTP ヘッダー( URL, Cookie など ) 、 POST メッセージ、応答メッセージなどを把握する

• 応答メッセージの HTML の内容を確認する• JavaScript の動作デバッグを行う

Web用デバッグツールを使って、問題判別Web用デバッグツールを使って、問題判別

Page 41: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

HTTP ヘッダーの確認

リクエストの URL を確認する– ブラウザが送信しているリクエストの URL を確認する

• ブラウザのアドレスバーだけでは不明な場合

– 同じような操作で、表示結果・動作結果が異なる場合など• 実際に URL を見ると、異なる URLへリクエストしているケースが多い

Cookie を確認する– 認証の問題

• セッション認証が上手く利かない場合など。まずは Cookie をサーバーに投げているかを確認する。

応答コードを確認する– 期待通りの結果が返っているかどうかの確認

ツールを利用する– ieHttpHeaders– Firebug, LiveHTTPHeader (Firefox)– Fiddler– など、様々存在する補助ツールを活用

GET /test.html HTTP/1.1Host: elephant.iikura.japan.ibm.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Accept-Encoding: gzip,deflateKeep-Alive: 115Connection: keep-aliveCookie: XXXX

HTTP/1.1 200 OKServer: Lotus-DominoDate: Mon, 05 Apr 2010 02:14:19 GMTContent-Type: text/htmlContent-Encoding: gzipContent-Length: 518Last-Modified: Mon, 29 Mar 2010 23:48:26 GMT

Page 42: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

ツールを使ったヘッダ確認例

Firefox + Firebug を使った確認例

個々の HTTPリクエストに対する、リクエスト・レスポンスヘッダが出力され、リクエストの URLや、 Cookie、応答コードなどが確認可能

個々の HTTPリクエストに対する、リクエスト・レスポンスヘッダが出力され、リクエストの URLや、 Cookie、応答コードなどが確認可能

Page 43: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

出力 HTML の確認

Domino が期待する HTML を生成しているかを確認する

ブラウザからソースを確認する程度でもよい

DOM ツリー出力、 CSS適用判定などが可能な補助ツールを使ってもよい– Firefox Firebug 、 IE Developer Toolbar など

期待する HTMLが生成されているかどうかを確認する。ツールによっては、 HTMLソースが画面のどの部分にあたるかを確認することが可能。

期待する HTMLが生成されているかどうかを確認する。ツールによっては、 HTMLソースが画面のどの部分にあたるかを確認することが可能。

Page 44: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

44

Fiddler とは?

Web クライアント

Web ブラウザ

Web サーバ

リクエストメッセージ

レスポンスメッセージ

Web ブラウザと Web サーバ間で、プロキシーとして動作することで、 HTTP(S) の通信内容をキャプチャーし、それを解析して HTTP やデータに関する情報を表示してくれるツール。

問題発生時の Web ブラウザと Web サーバ間のリクエストデータおよびレスポンスデータを解析することで問題切り分けの手助けになったり、製品トレースやログと照合することで障害解決のための有効な情報をもたらすことが可能。

Fiddler

•Fiddler が起動すると自動的に以下が、 IE に対して設定される。また、 Fiddler を終了すると自動的に設定が基に戻される。•「 LAN にプロキシ サーバーを使用する」が使用可•HTTP に関して、プロキシのアドレスが、 127.0.0.1 、ポート番号 8888 が設定•HTTPS に関して、プロキシのアドレスが、 127.0.0.1 、ポート番号 8888 が設定

Page 45: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

45

Lotus Domino との連携

Lotus Domino サーバWeb クライアント

FiddlerWeb ブラウザ・ Lotus iNotes・ Lotus DominoWeb Access(DWA)

HTTP タスク

Domino データベースのページ要求

Domino データベースへアクセス

Notes文書をHTML に変換

処理結果を HTMLで転送

Web ブラウザ・ベースの Lotus iNotes や Lotus Domino Web Access (DWA) であれば、 Web アプリケーションと同等なため Fiddler をプロキシーとして配置することで、 HTTP(S) の通信内容をキャプチャーすることが可能である。このため、障害時の解析にも使用することができる。

Page 46: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

46

Fiddler の導入

以下のサイトからダウンロード可能http://www.fiddler2.com/fiddler2/

•システム要件:•Windows 2000/XP/2003/Vista/Win7•Microsoft .NET Framework v2.0 以上•8 MB ディスク・スペース•800 MHz プロセッサー (Screams at 2.4ghz) 以上•256 MB RAM (1GB以上推奨 )••

Internet Explorer の場合

Fiddler 導入後、自動的に Internet Explorer にアイコンが追加され、ここをクリックすることで Fiddler が起動するFireFox の場合

FireFox 3.5 以上の場合、画面右下のオプションを「 Use Fiddler automatically 」に設定することで、 Fiddler を起動すると FireFox でも使用可能

Page 47: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

47

Fiddler の使用法 – リクエスト一覧の確認

アクセスしたデータがステータスコード、プロトコル、 URL とともにリアルタイムで表示される。

Page 48: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

48

( 参考 )Fiddler の使用法 – ICON の詳細

•リクエストがサーバーに送信されている最中•サーバーからのレスポンスを受信している最中•リクエストがブレークポイントによって停止中•レスポンスがブレークポイントによって停止中•リクエストに HTTP HEAD メソッドを使用•リクエストに HTTP CONNECT メソッドを使用 (HTTPS トラフィック )•HTML のレスポンス•イメージのレスポンス•スクリプトのレスポンス•CSS のレスポンス•XML のレスポンス•OK のレスポンス•HTTP/300 、 301 、 302 、 303 または 307 のレスポンス•HTTP/304 ( キャッシュが使用される ) のレスポンス•クライアント・クレデンシャルに関するレスポンス•サーバー・エラーのレスポンス•セッションがクライアント、 Fiddler またはサーバーによって中断

Page 49: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

49

Fiddler の使用法 – ヘッダー情報の確認

サーバとの間でやり取りされたセッションごとのヘッダー情報を見ることができる。

「 Inspectors 」 -> 「 Headers 」で表示可能上がクライアントからサーバへのリクエスト・ヘッダーを示し、下がサーバからクライアントへのレスポンス・ヘッダーを示す。

Page 50: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

50

Fiddler の使用法 – データの中身の確認 (1)

「 TextView 」を選択すると、そのセッションのボディ部分のテキストを確認することが可能。Web ページならば HTML を確認できる。

ヘッダーおよびボディ部分を含む、実際のクライアント、サーバ間のやり取りを確認する場合は、「 Raw 」を選択する。

Page 51: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

51

Fiddler の使用法 – データの中身の確認 (2)

「 View in Notepad 」ボタンを押すとメモ帳を起動することで中身の内容確認が可能。「 TextView 」の場合のみ「・・・」ボタンがあり、ボディ部分を好みのプログラムで表示することが可能

Page 52: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

52

Fiddler の使用法 – フィルタリング (1)

図1のような画面の場合、図2のようなセッションのやり取りが実施されている。画像ファイルを表示したくない場合、「 Filters 」タブから「 Use Filters 」にチェックして「 Response Type and Size 」内から「 Hide IMAGE/* 」を選択すると図3のように画像ファイルがフィルターされたセッションのみが表示される。また、特定のホストのみを記録することも可能

図1

図2

図3

Page 53: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

53

Fiddler の使用法 – フィルタリング (2)

ここでは、さらに、一定のサイズ以上または以下のファイルやスクリプト、画像、 SWF (Small Web Format) 、 CSS をブロックする機能があり、これらにチェックすると前ページの図1の画面は、上のような画面表示となる。

Page 54: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

54

Fiddler の使用法 – ブレークポイントの使用

左図のように「 Filters 」タブから「 Breakpoints 」内の項目にチェック(ここでは、 POST がリクエストされた時とレスポンス・ヘッダーの Content-Type に application/x-javascript; charset=ISO-8859-1 が設定されている時)すると、指定された内容を検知すると上図のように通信が停止し、ブラウザも読み込み中の状態となる。「 Break on Response 」ボタンで、レスポンスまで実行し再度停止する。「 Run to Completion 」で再開する。

Page 55: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

55

Fiddler の使用法 – リクエストを自分で送る

•サーバへのリクエストを自分で作成することが可能•「 Request Builder 」からリクエスト・メソッド、 URL および送りたいヘッダーを記述して「 Execute 」ボタンで実行可能•左のリクエスト一覧からセッションを選択して右のカラムへドラッグ&ドロップも可能

リクエスト・ヘッダー部分の記述

ボディ部分の記述

Page 56: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

56

Fiddler の使用法 – ローカル・ファイルを割り当てる

•特定の URL に対して、ローカルのファイルを割り当てることが可能•「 AutoResponder 」から特定の URI を指定し、その URI のリクエストがあった時に、ローカルに保存したファイルを使用するようにできる。•サーバ上に変更毎に CSS ファイルをアップロードしなくても、 CSS 変更程度の確認ならローカル作業で実施することが可能•例では、オリジナルの jpg ファイルを別の jpg ファイルに置き換えている

「 Rule Editor 」を使用して正規表現も可能regex:(?insx).*\.(gif|png|jpg)$ #Match strings ending with img types

Page 57: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

57

Fiddler の使用法 – HTTPS を使用する

HTTPS トラフィックの復号化を実施したい場合は、Fiddler メニューの「 Tools 」 -> 「 Fiddler Options 」から「 HTTPS 」タブを選択して「 Capture HTTPS CONNECTs 」にチェックし、「 Decrypt HTTPS traffic 」と「 Ignore server certificate errors 」にチェックする

Page 58: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

58

Fiddler の使用法 – GZIP されたコンテンツの確認

レスポンス・データ内に GZIP されたデータが含まれている場合、レスポンス・データ上部に「 Response is encoded and may need to be decoded before inspection. Click here to transform 」というメッセージが表示される。ここをクリックすると解凍される。

Page 59: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

59

Fiddler の使用法 – 統計情報の確認 (1)

「 Statistics 」タブから統計情報を確認することが可能

上の例からRequest Count : 26Bytes Sent : 37547Bytes Received : 363291

Request Started at : 18:37:14:4375Request Completed at : 18:37:55:1562

セッション1から30までの経過時間は、 40.7秒となっている。

Page 60: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

60

Fiddler の使用法 – 統計情報の確認 (2)

「 Statistics 」タブの最下部に「 Show Chart 」というリンクがあるので、それをクリックすることで、以下のようなセッション1からセッション30までの全リクエストの内訳が確認できる

Page 61: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

61

Fiddler の使用法 – ログの取得

Fiddler メニューの「 File 」から「 Save 」 -> 「 All Sessions 」などを選択すると表示されている全セッション・データを取得できる。この際、 SAZ 形式のファイルとして適当なローカル・フォルダーに保存が可能

Page 62: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

62

Fiddler の使用法 – 取得したログの確認

Fiddler メニューの「 File 」から「 Load Archive 」を選択すると取得したログ・ファイルを選択する画面が表示される。ログ・ファイルを選択すると Fiddler 上に取得した全セッション・データが展開される。

Page 63: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

参考文献

IBM Redbooks | Domino 7 Performance Tuning Best Practices to Get the Most Out of Your Domino Infrastructure http://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/redp4182.html

Domino アプリケーションのパフォーマンスに関する考慮事項http://www.ibm.com/jp/support/redbooks/Lotus/SG88851100.pdf

Lotus Domino 6 以降のバージョンにアップグレードしたあと、 HTTP タスクの応答に時間がかかる場合があるhttp://www.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/728131

IBM - Domino HTTP Active Thread recommendations http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21173877

IBM - Should the Domino HTTP server be configured to use Persistent Connections? http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21258823

(参考) DWA のパフォーマンス問題に対するトラブルシューティングhttp://www.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/729494

IBM ソフトウェア | Lotus Notes/Domino 問題判別ガイド  2章 基本設定と事前確認http://www-06.ibm.com/jp/domino02/software/lotus/support/pdguide/pdguide.nsf/index/c2?OpenDocument

Page 64: Lotus Domino Webサーバーのパフォーマンス・ …public.dhe.ibm.com/software/dw/jp/lotus/ldd_tech/2010apr...• 要求先のサーバ名。 HTTP1.1 から必須となった

IBM Software Group | Lotus software

参考文献

Firebug :: Add-ons for Firefox https://addons.mozilla.org/ja/firefox/addon/1843

DWA 問題判別:リクエストログの取得と解析http://www.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/733214

Fiddler2 ダウンロード・サイトhttp://www.fiddler2.com/fiddler2/

The Fiddler User Interfacehttp://www.fiddler2.com/fiddler/help/ui.asp