Skip to content

Performance Considerations

Paul Cleary edited this page Dec 6, 2018 · 2 revisions

We have several systems that are instrumented with Money, and have done extensive performance testing using Money. It is important to understand the potential impact of using Money on an existing system. Here are somethings to consider.

CPU

Money is non-blocking from its core, so it has negligible impact on the processing of your system. Logging money data will impact Memory and subsequently CPU (as we have bigger and more frequent GC cycles). See the Memory section below for more info.

Memory

Money by itself does generate some state, and it sticks around until a span completes or times out. On a single node, this will have some impact on the memory used by the process. If you happen to be processing 10,000 requests per second or more on a single node, you will definitely see an impact on Perm Gen.

Money core does not contribute significantly to memory; however, emitters do. Our typical setup uses the LogEmitter to emit log entries to our log files. In essence, a boat-load of strings are being generated and queued up in Logback AsyncAppender and written to disk. When using the LogEmitter, Money can have an impact on the performance of the system. In one test, a system without the LogEmitter fell over at 17,000 RPS. With logging enabled, we were only able to get 7,000 RPS before the system went into GC hell.