intra-mart Accel Platform 設定ファイルリファレンス 第26版 2020-08-01

レポート

Resin にはシステムの状態をPDFレポートに出力する機能が含まれています。

レポートの取得

レポートを取得する簡単な方法は、コマンド「pdf-report」を使用することです。pdf-reportは直ちにレポートを生成するようにサーバへ要求します。

Linuxの例

> resinctl pdf-report

Windowsの例

> resin.exe pdf-report

自動的なPDFレポートの生成

PDFレポートは毎週生成されるようにhealth.xmlに設定することができます。また、再起動などのイベント時に生成することも可能です。
<health:PdfReport>
  <path>${resin.root}/doc/admin/pdf-gen.php</path>
  <report>Summary</report>
  <period>7D</period>
  <snapshot/>
  <mail-to>${email}</mail-to>
  <mail-from>${email_from}</mail-from>
  <!-- <profile-time>60s</profile-time> -->

  <health:IfCron value="0 0 * * 0"/>
</health:PdfReport>
上の例では、スナップショットを作成して、PDFレポートを生成し指定したメールアドレスへ毎週レポートを送信します。
送信先のメールアドレスはresin.propertiesに記述します。
# Set the email address to receive weekly and restart PDF reports
email : admin@example.com
次の例では、watchdogよる再起動時にPDFファイルを生成します。
<health:PdfReport>
  <path>${resin.root}/doc/admin/pdf-gen.php</path>
  <title>Restart</title>
  <watchdog/>
  <mailto>user@example.com</mailto>

  <health:OnRestart/>
</health:PdfReport>

レポートの概要

以下の内容がレポートに出力されます。
  • サーバ環境の概要 - JavaVM、OS、Resinのバージョンなど
  • ヘルスメーターのグラフ - レポートが出力されるまでの統計グラフ
  • ヒープダンプ - ヒープメモリ使用量の上位
  • CPUプロファイル - CPUプロファイルの最も活動的な位置
  • スレッドダンプ - スナップショット取得時のResin内の全てのスレッド
  • ログレポート - java.util.loggingから出力された最新の「warning」レベルのメッセージ
  • JMXダンプ - スナップショット取得時の全てのJMX Mbeanデータ
レポートはいくつかの状況で使用するように設計されています。
  • Resinのバグレポート - Resin自体のサポートのために、スナップショットがあれば問題の解決やデバッグが行いやすくなります
  • 再起動やクラッシュの分析 - JavaVMが何らかの理由でクラッシュした場合、watchdogのレポートは、原因を突き止めるのに役立ちます
  • CPUとパフォーマンス - JavaVMが予想外にCPUを使用した場合、レポートで主な原因を示すことができます
  • スレッドのロック - スレッドダンプおよびCPUは、ロックされたコードを突き止めるために使用することができます

ヒープダンプ

ヒープダンプは、システムのメモリ割り当ての概要を示します。異常なメモリ配分のチェックに活用することができます。
ヒープダンプはオブジェクト自身のサイズとその子孫のサイズで「self+desc」の順にソートされます。例えば、java.lang.Stringは、その「self+desc」の一部として、char[]が含まれます。
以下の例は、一般的なアイドル状態のResinのヒープダンプです。
Class Name                                self+desc  self  count

 byte[]                                     22.23M  22.23M   14741
 com.caucho.db.block.Block                  20.28M  134.9K    2410
 char[]                                     13.89M  13.89M  122606
 com.caucho.util.LruCache                    7.52M   30.4K     317
 java.lang.String                            7.15M   1.97M   61426
 ..
最初にあるbyte[]とBlockは、主にResinの内部プロキシーキャッシュと分散キャッシュ·データベースです。Blockは「self」の方がはるかに小さいことに注意してください。 これは各Blockの「self+desc」が、大きなbyte[]バッファを持っているためです。
同様に、char[]バッファを含んでいるため、java.lang.Stringの「self+desc」は「self」よりもはるかに大きくなります。

クラスローダーのヒープダンプ

ヒープダンプには、クラスローダのメモリ使用量を個別に表示する項目があります。
クラスに基づいたメモリリークを確認するためにこのレポートを使用することができます。

スレッドダンプ

CPUに関する問題やスタックスレッドの場合、スレッドダンプを確認すれば各スレッドがシステムになにを行っているかを確認することができます。
いくつものスレッドが異常な個所で連なりロック状態になっているかをレポートから追跡することができます。
スレッドダンプのレポートは、同様のスタックトレースを有しているスレッドをマージします。マージされたスレッドはまとめてリスト表示されます。
ブロックされたスレッドとロックを保持しているスレッドがグループ化されているので、スレッドが継続してから多数のスレッドを妨げているかを確認する方が簡単です。
以下の例は正常なブロック状態を示しています。JDKのSSL実装は1つのスレッドのみ接続を受け入れ、他のすべてのスレッドは最初のスレッドを待ちます。
この場合「http://*:8444-17」という名前のスレッドがSocksSocketImplを所有しています。 3つのスレッドはロックのため並んで待機しています。(「http://*:8444-1」、「http://*:8444-10」、「http://*:8444-11」)
http://*:8444-17
    java.net.PlainSocketImpl.socketAccept
    -- locked java.net.SocksSocketImpl@1199747469
    java.net.PlainSocketImpl.accept
    java.net.ServerSocket.implAccept
    ...
    com.caucho.env.thread.ResinThread.runTasks
    com.caucho.env.thread.ResinThread.run

http://*:8444-1
  waiting on java.net.SocksSocketImpl@4782b18d owned by [126] http://*:8444-17
http://*:8444-10
  waiting on java.net.SocksSocketImpl@4782b18d owned by [126] http://*:8444-17
http://*:8444-11
  waiting on java.net.SocksSocketImpl@4782b18d owned by [126] http://*:8444-17
    java.net.PlainSocketImpl.accept
    java.net.ServerSocket.implAccept
    com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept
    ...
    com.caucho.env.thread.ResinThread.runTasks
    com.caucho.env.thread.ResinThread.run

...

CPUプロファイル

Resinの制限により、CPUプロファイルをPDFレポートに出力することはできません。
PDFレポートの「CPU Profile」には「A CPU profile was not generated during the selected timeframe.」と記述されます。

ロギング

最新の警告ログが出力されます。

Log(Warning)

2011-09-21 11:06:07 warning  WarningService: Resin restarting due to
                                  configuration change

JMXダンプ

JMXダンプはシステム内のすべてのJMX MBeanとその値を出力します。

JMX Dump

JMImplementation:type=MBeanServerDelegate
   ImplementationName     Resin-JMX
   ImplementationVendor   Caucho Technology
   ImplementationVersion  Resin-4.0.s110921
   MBeanServerId          Resin-JMX
   SpecificationName      Java Management Extensions
   SpecificationVendor    Sun Microsystems
   SpecificationVersion  1.4

com.sun.management:type=HotSpotDiagnostic
  ...