Here are the results of our performance tests.

Information

These are the results of our performance tests. If your performance is sensitive and/or you are working on server sizing, it may be better that you perform performance tests on a staging instance yourself.


Summary

Basically, once you have 50.000 requirements in the database, expect 20ms per requirement on the page when you save a page, and 20ms per requirement on view. This is not a commitment, as it depends on the machine, the set up, the configuration, the latency of the DB, the version of Confluence and Requirement Yogi.

Bottlenecks

We recommend:

Processes to monitor:

Performance in 3.0

Changes in 3.0:

We have evaluated on a personal machine with the following setup:

We have simply instrumented the code and created massive pages:

Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, ~525Kb text per page, 2ms network latency. No Jira connection.

Time

1ms latency,
1000 requirements,
1.3 MB page size.

Page creation

  • 5483ms saving the page

  • 12ms per requirement,

  • Total: +5 seconds (on top of Confluence's algorithm).

  • 8.3s (Confluence)

  • 7ms per requirement

  • Total +7.5s

Submission of excerpts

(This operation is in the background, the user doesn't wait for this).

  • 14ms per modified requirement
    (depending on the size of text and the number of properties).

  • Total 5.65s for 400 modified requirements.

  • Note: This is with 2ms additional network latency per DB queries. For most networks between a server and its database, the latency is sub-1ms.

  • 7ms per modified requirement.

  • Total +7854ms

Tested for Requirement Yogi 3.0.0 / C7.4 with 2ms and 1ms network latency,
in addition to the database latency, already loaded with 80.000 requirements.

Performance in 2.6.9

Same conditions:

Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, ~525Kb text per page, 2ms network latency. No Jira connection.

Time

1ms latency,
1000 requirements,
1.3 MB page size.

Page creation

  • 8338ms saving the page

  • 20ms per requirement,

  • Total: +7.9 seconds (on top of Confluence's algorithm).

  • 12.9s
    saving (Confluence)

  • 12ms per requirement

  • Total +12.1s

Submission of excerpts

(This operation is in the background, the user doesn't wait for this).

  • 28ms per modified requirement
    (depending on the size of text and the number of properties).

  • Total 11.40s for 400 modified requirements.

  • Note: This is with 2ms additional network latency per DB queries. For most networks between a server and its database, the latency is sub-1ms.

  • 14ms per modified requirement.

  • Total +13.9s

Tested for Requirement Yogi 2.6.9 / C7.4 with 2ms and 1ms network latency,
in addition to the database latency, already loaded with 80.000 requirements.

Performance in 2.0

Same conditions:

Event

Time (in addition to Confluence's algorithm).

For ~400 requirements, ~525Kb text per page, 2ms network latency. No Jira connection.

Time

1ms latency,
1000 requirements

Page creation

  • 480ms rendering of the page

  • 22ms per requirement,

  • Total: +8.9 seconds (on top of Confluence's algorithm).

  • 1082ms
    rendering (Confluence)

  • 13ms per requirement

  • Total +13s

Page edition

  • 700ms rendering of the page

  • 21ms per requirement,

  • Total +11.6 seconds.

  • 1700ms rendering

  • 15ms per requirement

  • Total +15.7s

Submission of excerpts

(This operation is in the background, the user doesn't wait for this).

  • 20-40ms per modified requirement
    (depending on the size of text and the number of properties).

  • Total 18,7s for 400 modified requirements.

  • Note: This is with 2ms additional network latency per DB queries. For most networks between a server and its database, the latency is sub-1ms.

  • 8ms per modified requirement.

  • Total +8111ms

New result:

  • 3ms per modified requirement

  • Total: 3s

Tested for Requirement Yogi 2.0.0 with 2ms and 1ms network latency, in addition to the database latency, already loaded with 80.000 requirements.

Performance changes in 2.0:

Performance in 1.11.5

Errors in the logs?

If your server meets problems like "OutOfMemoryException", "Java Heap Space" or "SiteMesh" exceptions, it could be related to building the Traceability matrix. One important thing to note is that the Requirement Yogi add-on may not be mentioned in those exceptions. If you are in this situation:

Also, please notify us if you're meeting performance issues. We've obtained Data Center certification with several performance tests, but real-life environment can be different than prepared tests and we want to keep improving.


Performance of upgrade tasks

Upgrade tasks are executed once, when the addon is upgraded to the provided version.

Version

Name

Execution Time

Memory usage

Assumption

Goal of the upgrade

1.x

Upgrade tasks performance was not measured before version 2.0.

2.0.1

V46RemoveOrphanRequirementsUpgradeTask

2 minutes 21 seconds

Max 4.1MB of local variables at any given time.

1,000,000 active requirements

1KB of text per requirement

iMac 2013 – 3.4 GHz Intel Core i5

Some requirements are in "ACTIVE" status despite having no page attached. Mark them as "DELETED".

2.2.2

V47EnsureEstateIsNotNullUpgradeTask

12 seconds

– Negligible

100,000 links to Jira

For the integration with external tools, we assume there is always a "space key", which is always the same value for Jira.

After 2.2.2, all upgrade tasks are non-blocking background jobs, executed 3 minutes after plugin installation.