0

heroku platform でいくつかのものをチェックするための適切なプロファイリングをどのように開発するのか疑問に思っていました。https://devcenter.heroku.com/articles/java-memory-issuesのようなherokuのサイト、具体的なリンクを確認したところ、ツールをvisualvmとして使用することはできないと言われているため、独自のモニターを開発するのは本当に難しいと思います、jmap、jstats など。プロセスの分離により不可能ですが、それはどういう意味ですか? 私が間違っていなければ、すべての dyno には独自の jvm があるので、それにアクセスできるのではないでしょうか?

私は本当に混乱しているだけでなく、あまりにも多くの情報がないので、誰かがそれについて何か教えてくれたらありがたいです.

一方でherokuアプリでnew relicのアドオンを確認したところ正常に動作しているのですが、herokuのダッシュボードに接続して確認する必要があるので、このような行為は避けてダッシュボードを自作したいと考えています。 heroku の内部プロセス間でプロセッサの使用率、メモリ、http リクエスト (将来的には alertra や nagios などのツールが使用される可能性がありますが) を知るために (私はいくつかの dyno Web と dyno ワーカーを取得しました)。

私の目標を理解していただければ幸いです。私はそれについて多くのことを検索してきましたが、私は不運でした.

乾杯

4

1 に答える 1

1

visualvmjmap、などのツールを使用できない理由は、ツールが JVM の TCP ポートに接続する必要があるためですが、dyno は、割り当てられた環境変数jstatで指定された単一の割り当てられた HTTP ポートでのみ着信接続を許可します。$PORT

Heroku 上の各 Java アプリには独自の JVM があることは間違いありません。それをイントロスペクトする最も簡単な方法は、アプリにJava エージェントを追加することです。これは、アプリと一緒に dyno 内で実行されているため機能します。これは New Relic のエージェントが行うことであり、情報が収集されてサービスに送信されますが、自分で作成することに興味がある場合は、完全に可能です (ただし、少し手間がかかる可能性があります)。

これheroku-javaagentは、JVM に関する重要な統計情報 (スレッド、メモリなど) を定期的にログ ストリームに出力する非常に単純な Java エージェントです。これで十分かもしれませんが、収集しようとしている情報に合わせていつでも微調整できます。また、情報をダッシュ​​ボードに直接送信するか、ログ ストリームを使用することもできます。これを開始するには、Java アプリケーションのメモリの問題のトラブルシューティングに関する記事のメモリ ログ エージェントのセクションを参照してください。

于 2013-03-22T06:12:28.757 に答える