Sun Java System Portal Server 6 2005Q4 配備計画ガイド |
付録 B
分析ツールSun JavaTM Enterprise System および SDK には、インストール後すぐに満足のいく体験ができるようにデフォルトの設定オプションが用意されています。ただし、デフォルトのオプションが、Sun Java System Portal Server 本稼働環境の Web アプリケーションのパフォーマンスを最高にするとはかぎりません。ここでは、いくつかの代わりのオプションと基本的なチューニング技術について説明します。
注
ここで説明するチューニング設定は、Solaris プラットフォームに存在する Portal Server に焦点を合わせています。ただし、この原則はその他の一般的な Unix タイプのオペレーティングシステムに適用できます。
次の表 B-1 は、Portal Server とその Web コンテナのチューニングのためのフィードバックの提供に役立つパフォーマンス分析ツールを示しています。パフォーマンスの問題以外にも、それらのツールの多くは、オペレーティングシステムレベル全体でのその他のタイプの障害を検出するのに使用できます。
多くのツールの説明には、出力の例、出力結果の解釈の仕方についての提案、出力結果の改善方法についてのヒント、および関連サイトへのリンクが含まれています。
mpstatmpstat ユーティリティーは、CPU の使用率を監視するのに役立つツールです。特に、企業ソリューションによくある構成の、マルチプロセッサマシンで実行されるマルチスレッドアプリケーションの CPU の使用率の監視に役立ちます。
mpstat には、5 〜 10 秒の引数を使用します。
5 〜 10 秒よりも短い期間を分析するのは難しくなります。期間を長くすると、誤った結果につながる急激な値の上昇をなくしてデータを滑らかにすることができる場合があります。
出力
#mpstat 10
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 1 0 5529 442 302 419 166 12 196 0 775 95 5 0 0
1 1 0 220 237 100 383 161 41 95 0 450 96 4 0 0
4 0 0 27 192 100 178 94 38 44 0 100 99 1 0 0
注意点
特定の CPU では intr および ithr の値がかなり大きいことに注意してください。Solaris はシステムの割り込みを処理するために CPU をいくつか選択します。選択される CPU および数は、システムに接続された入出力デイバス、それらのデバイスの物理的な場所、また CPU に対して割り込みが禁止されている (psradmin コマンド) かどうかによって決定されます。
- intr - 割り込み
- intr - スレッド割り込み (クロック割り込みは含まない)
- csw - 任意コンテキストスイッチ。この数値が徐々に増加し、アプリケーションに入出力制約がない場合、相互排他競合を示す場合があります。
- icsw - 強制コンテキストスイッチ。この数値が 500 を超える場合は、システムの負荷が高いことを示します。
- smtx - smtx が急激に増加する場合。50 〜 500 までの増加は、システムリソース (ネットワークやディスクなど) の障害の兆候を示します。
- Usr、sys、および idl - これらの 3 つの列は、CPU の飽和を表します。最大の負荷がかかった状態 (0% アイドル) におけるよくチューニングされたアプリケーションは、usr が 80 〜 90% 内に、sys が 20 〜 10% に収まる必要があります。sys のパーセント値が小さいのは、ユーザーコードにより多くの時間が使用され、プリエンプションが少ないことを反映し、これは Portal アプリケーションのスループットを向上します。
考慮点
アプリケーションが、効率的に使用できるだけの数の CPU を利用できるようにします。たとえば、1 つのインスタンスに 2 つの CPU を使用するとパフォーマンスが最高になります。14 個の 2 CPU プロセッサセットを作成すると、パフォーマンスが最高になると予想できます。
csw 値の増加は、ネットワークの使用の増加を示します。一般的に、csw 値が高くなるのは、接続をプーリングしないため、または新しい接続を非効率的に扱うために、ソケット接続が多数作成された結果が原因です。この場合は、netstat -a | wc -l を実行すると、TCP 接続の数も多いことがわかります。netstat のセクションを参照してください。
icsw の増加がみられるなら、その一般的な原因はプリエンプションです。多くの場合、プリエンプションは CPU のタイムスライスが終了したことによって生じます。
iostatiostat ツールは、ディスク入出力サブシステムの統計情報を提供します。iostat コマンドには、多数のオプションがあります。詳細は、マニュアルページを参照してください。次に示す典型的なオプションは、入出力の障害を特定するための情報を提供します。
出力
#iostat -xn 10
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 fd0
2.7 58.2 14.6 2507.0 0.0 1.4 0.0 23.0 0 52 d0
47.3 0.0 2465.6 0.0 0.0 0.4 0.0 8.8 0 30 d1
注意点
考慮点
ファイルシステムにさらにディスクを追加します。単一ディスクファイルシステムを使用している場合は、ハードウェアまたはソフトウェアの RAID へのアップグレードが次にとるべき手段です。ハードウェアの RAID は、ソフトウェアの RAID よりもかなり高速であり、強くお勧めします。ソフトウェアの RAID ソリューションは、システムの CPU にさらに負荷をかけます。
ストレージのハードウェアまたはソフトウェアの動作によっては、ufs のデフォルト値の 8192K バイト以外のブロックサイズを使用するほうがよい場合があります。『Solaris System 管理ガイド』を参照してください。
netstatnetstat ツールは、ネットワークサブシステムの統計情報を提供します。このツールは、ネットワークサブシステムのさまざまな側面を分析するのに使用できます。分析対象には TCP/IP カーネルモジュールとインタフェースの帯域幅の 2 つが含まれます。両方に対する分析の概要を次に示します。
netstat -I hme0 10
これらの netstat オプションは、インタフェースの帯域幅の分析に使用されます。現在のスループットの上限 (最大) は、出力から算出できます。netstat の出力はパケットのメトリックスを報告しますが、これは必ずしもパケットの最大サイズである必要はないので、上限が報告されます。帯域幅の上限は、次の式で求めることができます。
使用される帯域幅 = (パケットの総数) / (ポーリング間隔 (10)) * MTU (1500 デフォルト)。
インタフェースの現在の MTU は、ifconfig -a で確認できます。
netstat -I hme0 10 Output
#netstat -I hme0 10
input hme0 output input (Total) output
packets errs packets errs colls packets errs packets errs colls
122004816 272 159722061 0 0 348585818 2582 440541305 2 2
0 0 0 0 0 84144 0 107695 0 0
0 0 0 0 0 96144 0 123734 0 0
0 0 0 0 0 89373 0 114906 0 0
0 0 0 0 0 84568 0 108759 0 0
0 0 0 0 0 84720 0 108800 0 0
注意点
- colls- 衝突。ネットワークが交換ネットワークでない場合、低レベルの衝突が発生する可能性があります。ネットワークの飽和状態が増すと、衝突が増加し、最終的には障害になります。衝突の最善の解決策は、交換ネットワークです。
- errs - エラー。エラーの存在は、デバイスエラーを示す可能性があります。使用しているネットワークが交換ネットワークである場合、エラーはネットワークの帯域幅がほとんど使い果たされていることを示します。この問題の解決策は、システムの帯域幅を広くすることです。このためにはネットワークインタフェースを追加するか、またはネットワークの帯域幅をアップグレードします。これは、使用している特定のネットワークアーキテクチャーに大きく依存します。
考慮点
これらの netstat オプションは、TCP カーネルモジュールの分析に使用されます。報告されるフィールドの多くは、障害を示す、カーネルモジュール内のフィールドを表します。それらの障害には、ndd コマンドおよび /etc/inet で参照されるチューニングパラメータを使用して対処できます。
netstat -sP tcp の出力
#netstat -sP tcp
TCP tcpRtoAlgorithm = 4 tcpRtoMin = 400
<snip>
tcpInDupSegs = 1144 tcpInDupBytes =132520
tcpInPartDupSegs = 1 tcpInPartDupBytes = 416
tcpInPastWinSegs = 0 tcpInPastWinBytes = 0
tcpInWinProbe = 46 tcpInWinUpdate = 48
tcpInClosed = 251 tcpRttNoUpdate = 344
tcpRttUpdate =1105386 tcpTimRetrans = 989
tcpTimRetransDrop = 5 tcpTimKeepalive = 818
tcpTimKeepaliveProbe= 183 tcpTimKeepaliveDrop = 0
tcpListenDrop = 0 tcpListenDropQ0 = 0
tcpHalfOpenDrop = 0 tcpOutSackRetrans = 56
注意点
考慮点
注意点
次の点を考慮します。
/etc/system のチューニングパラメータ表 B-2 は、パフォーマンスの調査時に使用される /etc/system のチューニングパラメータを示しています。変更は、それぞれを /etc/system ファイルに追加することによって適用されます。
すべての /etc/system パラメータの説明は、『Solaris Tunable Parameters Reference Manual』を参照してください。
表 B-3 は、TCP カーネルチューニングパラメータの一覧です。それらは、Portal Server のほとんどのパフォーマンスに影響することがわかっている TCP チューニングパラメータです。それらのパラメータの推奨値は、『Identity Server Customization and API Guide』を参照してください。