Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド

高負荷の問題

次のような症状が出るシナリオは、高負荷であると判断できます。

高負荷の問題が疑われる場合は、次の点を考慮してください。


注 –

多くの場合、これらの問題すべては、より多くの CPU パワーを利用できるようにすることで解決できます。


タプルログの容量が不足していないか ?

すべてのユーザー操作 (deleteinsertupdate) はタプルログに記録されて、実行されます。タプルログは、次の理由でいっぱいになる可能性があります。

解決法 1

「CPU 利用率の向上」の説明に従って、CPU の使用量をチェックします。

解決法 2

CPU の利用状況に問題がなければ、ディスク入出力をチェックします。ディスク競合の兆候がある場合は、hadbm set DataBufferPoolSize=... でデータバッファーサイズを大きくして、ログレコード処理中のページフォルトを回避します。ディスク競合が発生する場合は、「ディスクの競合はないか ?」で説明している解決法に従います。

解決法 3

ネットワーク競合の兆候がないかどうかチェックし、ボトルネックを解決します。

解決法 4

hadbm set LogBufferSize=... を使用して、タプルログバッファーを大きくします。

node-internal ログがいっぱいになっていないか ?

CPU またはディスク入出力に問題があると、スケジュールされても処理されない node-internal 操作が異常に増加します。

node-internal ログの容量がなくなると、履歴ファイルに node-internal ログの HIGH LOAD を示すメッセージが出力されます。

解決法 1

「CPU 利用率の向上」の説明に従って、CPU の使用量をチェックします。

解決法 2

CPU の利用状況に問題がなければ、ディスク入出力をチェックします。ディスク競合の兆候がある場合は、hadbm set DataBufferPoolSize=... でデータバッファーサイズを大きくして、ログレコード処理中のページフォルトを回避します。ディスク競合が発生する場合は、「ディスクの競合はないか ?」で説明している解決法に従います。

ロックの数は十分か ?

この状況を識別するための主な追加の症状は、次のとおりです。

解決法 1: 長いトランザクションを分割する

ノード上で実行されるトランザクションで、そのノードに割り当てられたロックの 25% を超える数のロックを使用することはできません。「repeatable read」遮断レベルで実行される読み取りトランザクション、および更新/挿入/削除トランザクションでは、トランザクションが終了するまでロックが保持されます。したがって、長いトランザクションを小さいトランザクションに分割することをお勧めします。

解決法 2: ロックの数を増やす

hadbm set NumberOfLocks= を使用して、ロックの数を増やします。

パフォーマンスチューニングを行えば問題を解決できるか ?

ほとんどの状況では、負荷を減らすかリソースの可用性を高めることでホストのパフォーマンスを改善できます。次に示す手順はさらに広範囲に適用できます。

これに加え、『パフォーマンスチューニングガイド』の説明に従って次のリソースを調整することにより、「HIGH LOAD」の問題を改善できます。

表 3–1 HADB のパフォーマンスチューニングプロパティー

リソース 

プロパティー 

データベースバッファーのサイズ 

hadbm attribute DataBufferPoolSize

タプルログバッファーのサイズ 

hadbm attribute LogBufferSize

ノード内部ログバッファーのサイズ 

hadbm attribute InternalLogBufferSize

データベースロックの数 

hadbm attribute NumberOfLocks