Reaction: Implement a Tracing/APM tool and identify performance hot spots

Created on 9 Jul 2019  Â·  6Comments  Â·  Source: reactioncommerce/reaction

Implement a tracing or APM tool to the application, and work to identify performance hot spots:

[x] Research options and report (e.g. NewRelic, Honeycomb, Datadog, etc.)

[ ] look at spots where the app interacts with the Mongo database for large collections (e.g. find spots we’re pulling the entire collection from the DB into memory, doing some kind of in-memory sort, and then pushing the result to the client).

[ ] dig on the performance, focusing on high-impact/traffic queries like our product listing page, navigation queries, product detail, cart, and anything related to checkout.

[ ] (possible sub-task): create an enterprise-sized data set that works with the stock-reaction environment (perhaps creating a following up ticket).

[x] (possible sub-task): Check at our Jaeger as well.

enhancement

Most helpful comment

@bt3gl Hey, maybe you will be interested in Elastic APM, I have developed meteor agent for elastic:

  1. APM: https://github.com/kschingiz/meteor-elastic-apm
  2. Metrics: https://github.com/kschingiz/meteor-measured

All 6 comments

We are down with:

New Relic

_Trial: https://newrelic.com/signup?trial=apm_

  • Response Time, Throughput, Error Rates, etc.
  • Performance of external services.
  • Most time-consuming transactions.
  • Cross-Application Tracing.
  • Good database monitoring: SQL query analysis, slow SQL report, time spent in database calls, search all DB/cache operations.
  • Good if we wanted to focus on some easy dashboards.

Honeycomb

_Trial: https://www.honeycomb.io/_

Tracing Whitepaper

  • Focused on “distributed tracing”.
  • Accepts events with no schema or index.
  • It seems very easy to write queries (“break down”, “calculate per group”, “filter”, etc.)
  • Horizontal sharding indefinitely.
  • BubbleUp: in-house algorithm for outlier/anomaly detection.
  • New, but very promising. Great community.
  • Good if we want to take more control of our tracing.

Great summary @bt3gl - thanks for the update!

@bt3gl Hey, maybe you will be interested in Elastic APM, I have developed meteor agent for elastic:

  1. APM: https://github.com/kschingiz/meteor-elastic-apm
  2. Metrics: https://github.com/kschingiz/meteor-measured

@kschingiz Interesting, I'm currently investigating aswell what would be the best way of integrating Elastic APM here and also found your package. Will this still give access to the other integrations elastic-apm-node offers on default?
Mostly I'm thinking of apollo server and the raw mongo calls that run separate from those that still rely on meteor.

@janus-reith Yes, meteor-elastic-apm uses internally elastic-apm-node and all its features are supported + I have published new version yesterday which integrates meteor-elastic-apm with meteor-measured which means you can build meteor metrics charts in Kibana, learn how to do it in this Metrics docs

That sounds great, will try it out!

Was this page helpful?
0 / 5 - 0 ratings