0

MSDNのドキュメントによると、ページ読み取り/秒は、システムの問題がメモリ不足であるかどうか、またはコーディングの問題/メモリリークであるかどうかに対処するための良い方法です。

私は他の人からのアドバイスと、詳細を知るための道を進む方法を探しています。

私は自分のマシンで次のものを実行しています(Windows 7.64ビット。4GBRAM)

1. InteliJ 10 (Tomcat for my Web Services & JSP for the front end)
2. Oracle 11g

問題がどこにあるのかを特定しようとしています。そこで、JMeterでスクリプトを作成して、システムを少し調整してデータを作成し、システムでデータを検索しました。

パフォーマンスモニターを10分間実行すると、データは次のようになります。

Page Reads/Sec (Average): 26.841
Pages Input/Pages Fault = Hard Fault % = 5%
Pages Fault/sec (Avg) = 2300

MSDNによると、5ページ読み取り/秒を超える持続値は、多くの場合、メモリ不足の強力な指標ですが、これは持続値であり、平均ではありません。それは数回スパイクしますが、長い間、0から3の間で、いくつかのスパイクが非常に大きくなるようです。

メモリリークが問題になるのではないかと思いました。ただし、コードを調べてストリームが閉じていることを確認した後(ファイル/入力/ DB接続など)、よくわかりません。

このデータは、メモリの不足、サービスのメモリリーク、または構成の問題を示していますか?

編集1:ヒープを見る

現在、アクセスできるのは開発システムのみで、本番システムにはアクセスできません。ログにアクセスしてシステムでjvisualVMを使用するには、他の誰かと調整する必要があります。

ただし、先週と今日、開発システムでいくつかのヒープダンプを取得しました。String&char []を除いて、クラスの使用法に夢中になることはありません。モニターを見ると、開発中の私のヒープサイズは463,863で、最大値は約480です。使用されるフラックスは415から450の間です。

Eclipse Memory Analyzerとヒープダンプの「リークの疑いのあるレポート」を使用すると、3つの問題の疑いがあることがわかります。

 1. One instanceo f "org.apache.jasper.servlet.JspServlet" loaded by "org.apache.catalina.loader.StandardClassLoader"  Occupies 18.70%  The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment[]

 2. The thread org.apache.tomcat.util.threads.TaskThread @ http-apr-8080-exec-19 keeps local variables with total size 12.30%.  The memory is accumulated in one instance of "org.apache.tomcat.util.threads.TaskThread" loaded by "org.apache.catalina.loader.StandardClassLoader"

 3. The thread org.apache.tomcat.util.threads.TaskThread @http-apr-8080-exec-24 keeps local variables with total size 10.72%.  The m emory is accumulated in one instance of "org.apache.tomcat.util.threads.TaskThread'  loaded by "org.apache.catalina.loader.StandardClassLoader"

TomCatは最初に多くのものをロードして保存するので、これは正常であるという印象を受けました(間違っている可能性があります)。

4

2 に答える 2

2

できることの1つは、タスクマネージャーを調べて、Java関連のプロセスが消費しているメモリの量を観察することです。

たとえば、メモリを大量に消費する上位10個のプロセス(Java関連かどうかに関係なく)のすべてのプライベートワーキングセットメモリを合計します。この値が物理メモリ容量の75%に近いかそれを超える場合、またはPAEが無効になっている32ビットオペレーティングシステムを実行している場合(オペレーティングシステムを指定しなかった場合)、物理メモリの制限である可能性があります。

プライベートワーキングセットの合計が物理メモリの合計よりもはるかに少ない量を使用している場合は、それに関連する問題ではない可能性があります。また、Oracleデータベースに関連する大量のディスクI/Oである可能性もあります。メモリを増やすと、システムがディスクページをRAMにキャッシュできるようになります。これにより、RAMが一種のディスクとして扱われるため、読み取りが大幅に高速化されます(ただし、RAMはハードディスクの20〜50倍高速です)。

于 2013-01-07T20:44:01.823 に答える
0

Oracleデータベースを診断している場合、MSDNは非常に貧弱なガイダンスソースです。SQLServerのアーキテクチャはあまりにも異なっているため、関連性がありません。コンセプトマニュアルを読む必要があります。

Oracleのデータディクショナリには、システムのパフォーマンスに関するさまざまな洞察を提供するビューがあります。現在あなたに関連しているのはV$SGA_TARGET_ADVICEです。これにより、システムのメモリを増減した場合の予測される効果がわかります。詳細を確認してください

于 2013-01-08T05:25:30.487 に答える