jvm の次の変更についてメール警告を生成する方法
1) メモリ 2) スレッド 3) データベース接続
jmxを使用して
どんな助けでも役に立ちます
ありがとう
jvm の次の変更についてメール警告を生成する方法
1) メモリ 2) スレッド 3) データベース接続
jmxを使用して
どんな助けでも役に立ちます
ありがとう
記憶に関する質問にお答えします。特定のメモリ プールがしきい値を超えたときに通知を受け取るには、次のようにします。すべてのメモリ プールのリストを取得するには、ManagementFactory.getMemoryPoolMXBeans() を呼び出します。次に、あなたにとって重要なものを選択してください。私のマシンのリストは次のとおりです。
Code Cache
Eden Space
Survivor Space
Tenured Gen
Perm Gen
Perm Gen [shared-ro]
Perm Gen [shared-rw]
しかし、これには意図的に標準がなく、バージョンと実装によって異なると思います。まず、興味のあるプールを取得します。
MemoryPoolMXBean memPool = ...; // Get a MemoryPoolMXBean
次に、使用量のしきい値が許可されているかどうかを確認します。その場合は、1 つ (バイト単位) を設定します。
if(memPool.isUsageThresholdSupported())
{
memPool.setUsageThreshold(5000000);
}
次に、NotificationListener を MemoryMXBean の addNotificationListener に渡すことによって、しきい値を超えたときに通知を要求します (実際には、最初に NotificationEmitter にキャストする必要があります)。この例では、NotificationListener は匿名の内部クラスですが、javax.management.NotificationListener インターフェースを実装している限り、任意のものにすることができます。基本的に、以下で行ったことは、使用されているメモリの量に応じて、愚かなメッセージを標準出力/標準エラー出力に出力することです。もちろん、代わりに JavaMail やサードパーティのメール フレームワークにフックしてメールを送信することもできます。
NotificationEmitter memBean = (NotificationEmitter)(ManagementFactory.getMemoryMXBean());
memBean.addNotificationListener(new NotificationListener()
{
public void handleNotification(Notification n, Object handback)
{
CompositeData cd = (CompositeData)n.getUserData();
MemoryNotificationInfo mni = MemoryNotificationInfo.from(cd);
MemoryUsage memUsage = mni.getUsage();
long bytesUsed = memUsage.getUsed();
if(bytesUsed > 512000000)
System.err.println("Oh, no, we're using more than 512M!");
else
System.out.println("It's okay. We're only using " + bytesUsed + " bytes.");
}
}
スレッドに関する限り、関連する Bean は明らかに ThreadMXBean であり、ManagementFactory.getThreadMXBean() から取得します。ただし、しきい値を設定したりリスナーを追加したりする組み込みの方法がないように見えるため、ポーリングする必要があります。ManagementFactory.getThreadMXBean().getAllThreadIds().length だけでスレッド数を取得できます。もちろん、Bean にはさらに多くの情報があります。
最後に、「データベース接続」はあいまいです。どのデータベースシステムを使用していますか? 問題のJVMはサーバーまたはクライアントなどですか.
後者の 2 つのリソースに関する詳細情報が必要な場合は、新しい質問をすることをお勧めします。
+1 マシューズの回答
しかし、Java 7.40 以降のユーザーがこれに出くわした場合、UI 指向のソリューションがあります。
これらのアラートを生成するには、Java Mission Control (JMC) を利用できます。
現在、JMC は Java ディストリビューションにパッケージ化されているため、JMC を呼び出して JMX リモート ポートに接続するだけです (この JVM がローカルの場合は、JMC を呼び出したときに既に接続されているはずです)。
最初の画面 (MBeanServer) で、一番下に [トリガー] タブが表示されます。ここをクリックすると、上記の 3 つの条件すべてに対して電子メール トリガーを設定できるはずです。