# Performance testing

**URL:** <https://forum.canton.network/t/performance-testing/4006>\
**Category:** App Development\
**Tags:** daml, canton\
**Created:** [February 24, 2022, 2:44pm UTC](https://forum.canton.network/t/performance-testing/4006 "2022-02-24T14:44:43Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![MatthiasSchmalz](https://yyz2.discourse-cdn.com/flex034/user_avatar/forum.canton.network/matthiasschmalz/32/243_2.png) [@MatthiasSchmalz](https://forum.canton.network/u/MatthiasSchmalz)\
**Post date:** [February 24, 2022, 3:55pm UTC](https://forum.canton.network/t/performance-testing/4006/2 "2022-02-24T15:55:32Z")

</div>

Hi @francescobenintende,

welcome to the forum!

Let’s get straight to your questions:

Performance numbers depend on many factors (commands you send / DAML model, hardware, network, …) and therefore we do not share numbers in public at the moment. But let me point you to a few utilities that are helpful when doing performance tests:

1. The `myParticipant.ledger_api.transactions.start_measuring` command will subscribe to the transaction stream and register a metric that tracks the rate at which a participant outputs new transactions:  
[Canton Console — Canton 1.0.0-SNAPSHOT documentation](https://www.canton.io/docs/dev/user-manual/usermanual/console.html#ledger-api-transactions-start-measuring)  
The command also takes a call-back that gets invoked on every transaction; that would allow you to implement your own measurements, if you want to bypass metrics.

2. This section of our documentation explains how you configure Canton to report metrics to a File, via JMX, to Graphite or to Prometheus:  
[Monitoring — Canton 1.0.0-SNAPSHOT documentation](https://www.canton.io/docs/dev/user-manual/usermanual/monitoring.html#metrics)  
To get started with metrics, I would probably go for JMX. This allows you to connect to your node using VisualVM and view all the available metrics. Once you have a rough idea which metrics are relevant to you, you can still setup Graphite or Prometheus.

3. If you want to see where a command spends how much time, you should look into tracing: [Monitoring — Canton 1.0.0-SNAPSHOT documentation](https://www.canton.io/docs/dev/user-manual/usermanual/monitoring.html#tracing)

4. Now to your very important question of how to actually load the system. As a starting point, I would use a very simple DAML model. If you don’t have one, you can use the built-in ping workflow: [Canton Console — Canton 1.0.0-SNAPSHOT documentation](https://www.canton.io/docs/dev/user-manual/usermanual/console.html#health-ping)  
The bong workflow has specifically been designed to create high load and contention:  
[Canton Console — Canton 1.0.0-SNAPSHOT documentation](https://www.canton.io/docs/dev/user-manual/usermanual/console.html#testing-maybe-bong)  
From that you can move into various directions:

5. Last but not least, if you observe that the system gets overloaded (timeouts), look at this post: [Canton - Sequencer time [..] Exceeding max-sequencing-time / Response message for request X timed out - #2 by MatthiasSchmalz](https://discuss.daml.com/t/canton-sequencer-time-exceeding-max-sequencing-time-response-message-for-request-x-timed-out/3999/2)

That’s a lot of information and I hope it is helpful to you. Please don’t hesitate to follow-up on any of these points, if you need more help!  
Regards,  
Matthias

---

_[View the full topic](https://forum.canton.network/t/performance-testing/4006)._
