2017-06-27 5 views
0

いくつかのJavaベースのプロジェクトを取得メトリクスの二つの方法を提供するAPI:は、よりパフォーマンス何ですか - JolokiaでJMXを読んだり、RESTでメトリックを取得は、Solrのような

    Jolokia経由
  1. 読書のJMX MBeanと
  2. 読書メトリックを経由して metrics REST apis

理論的には、何がより効果的でしょうか?
(今は単一のノードクラスタと仮定します)。

JolokiaプロセスがJettyのようなサーバーのWebコンテナを経由しないため、Jolokiaベースのメトリックがより効果的なようです。むしろJolokiaはJavaプロセスからJavaプロセスレベルでJMXメトリックをフェッチします。 REST APIは、理解して解析するのが確実に簡単です。しかし、これは桟橋を通過するREST呼び出しを作成することを含み、おそらく各要求ごとにスレッドを使用しますか?

Server ---> JMX ---> Jolokia ---> REST api of Jolokia 
Server ---> REST api of Server itself 

この点でJolokiaは軽量ですか?より軽量であるということは、全体的な待ち時間ではなく、サーバに及ぼす影響を意味することに注意してください。メトリック取得呼び出しは、できるだけサーバーに課金されるべきではなく、メトリック取得呼び出しの全体的な待ち時間はそれほど重要ではありません。

これらの方法のいずれかを選択して、すべてのSolrノードから1分ごとにメトリックをクエリし、grafanaにプッシュする必要があります。

これに関するいくつかの推奨事項は素晴らしいでしょう。

答えて

1

明確な答えはありません(まだベンチマークはありません)。しかし、JolokiaはのようなRESTと見なすことができるので、私は大きな違いはないと思っています。実際、ActiveMQはJolokiaをmetrics 'REST' interfaceとして使用しています。

次のコスト要因を考慮する必要があります。

  • (内部)メトリックオーバーヘッド
の取り扱い自体を照会
  • シリアル化へ/ JSON/XMLから
  • 交通費
  • HTTP

    すべてのメトリクスへのアクセスには、同様のコストがあります。メトリックを公開するために、JolokiaはHTTPサーバー(JVMの内部サーバーまたはJettyの外部サーバー)も使用しているため、大きな違いはありません。

    おそらく最大の相違点は、シリアル化コスト(負荷のかなりの部分を占める)であるため、使用されるJSON直列化ライブラリに依存します。 Jolokiaはここでjson-simpleを使います。これはquite speedyであることが知られています。

    しかし、非常に重要な側面は、です。メトリックを照会する必要があります。それぞれのカスタムメトリックAPI(参照するSolrのような)はさまざまな種類のメトリックをさまざまな形式で公開しているため、監視ソリューションをそれに適合させる必要があります。対照的に、Jolockは標準であるJMXを公開しているため、さまざまな状況で適用可能です。

    最後に、実際のベンチマークだけが答えを示します。

  • +0

    ありがとうRoland。私は少し質問を更新しました。私たちは、2つの方法でメトリックをフェッチするサーバーの影響をより重視し、サーバーに課税されることのないものを選択したいと考えています。 – user2250246

    関連する問題