大規模で複雑なTomcatJavaWebアプリケーションでパフォーマンスの問題を解決しようとしています。現時点での最大の問題は、メモリ使用量が急増し、アプリケーションが応答しなくなることです。ログプロファイラーとログファイルのベイズ分析で修正できるものはすべて修正しました。本番のTomcatサーバーでプロファイラーを実行することを検討しています。
優しい感性を持つ読者へのメモ:
本番アプリのプロファイリングという概念自体が不快だと感じる人もいることを理解しています。私は他のほとんどのオプションを使い果たしましたのでご安心ください。これを検討している理由は、テストサーバーで本番セットアップを完全に複製するためのリソースがなく、テストサーバーで対象の障害を発生させることができなかったためです。
質問:
私は、Tomcatで実行されているJava Webアプリケーションで機能するか、言語に依存しない方法でこの質問に答える答えを探しています。
- プロファイリングのパフォーマンスコストはいくらですか?
- 本番環境でWebアプリケーションをリモート接続してプロファイリングすることが悪い考えである他の理由(奇妙な障害モード、セキュリティの問題など)はありますか?
- プロファイリングはメモリーフットプリントにどの程度影響しますか?
- 具体的には、パフォーマンスコストが非常に低いJavaプロファイリングツールはありますか?
- Webアプリケーションのプロファイリング用に設計されたJavaプロファイリングツールはありますか?
- visualVMを使用したプロファイリングのパフォーマンスコストに関するベンチマークを持っている人はいますか?
- visualVMはどのサイズのアプリケーションとデータセットに拡張できますか?