Performance and scale testing
We’re committed to continuously evolving and enhancing the quality of our performance reports. This report presents a comprehensive overview of the performance metrics for the most recent 10.3 Long Term Support (LTS) release of Jira Software Data Center.
About Long Term Support releases
We recommend upgrading Jira Software regularly, but if your organization's process means you only upgrade about once a year, upgrading to a Long Term Support release is a good option. It provides continued access to critical security, stability, data integrity, and performance fixes until this version reaches end of life.
TL;DR
- In Jira Software Data Center 10.3 LTS, we've introduced a new performance testing framework that captures performance more accurately by using NFR thresholds, mimicking the end user experience more closely.
- Our tests are conducted on datasets that mimic an extra-large cohort on minimal recommended hardware to provide performance thresholds achievable for all of our customers.
- We routinely carry out internal performance testing to ensure that all actions remain within the NFR thresholds. Our continuous monitoring enables us to optimize performance and effectively address any regressions.
- We conducted tests with the new framework on versions 9.12 and 10.3 using a comparable setup and found no regressions.
The report below presents test results conducted using non-optimal data shape or hardware and doesn’t represent Jira’s peak performance. Instead, it showcases the performance of a Jira instance typically encountered for customers in an extra-large cohort.
However, we also provide guidance on optimizing your instance to achieve performance that surpasses the results shown in this test. More on performance and scaling
Summary
In the Jira 10.3 release, we’re showcasing the results of our performance testing through a new framework that focuses on Non-Functional Requirements (NFR) thresholds for essential user actions. These thresholds serve as benchmarks for reliability, responsiveness, and scalability, ensuring that our system adheres to the expected performance standards. We've successfully delivered features that significantly impact the product and consistently addressed performance regressions to pass all NFR tests. You can be confident that as the product evolves and you scale, we’ll remain dedicated to optimizing and maintaining the performance.
Testing overview
Testing methodology
The test scenarios were all run simultaneously using scripted browsers. Each browser was scripted to execute one of the scenarios listed below repeatedly and without thinking time until at least 1000 results were gathered per scenario.
Test environment
The performance tests were all run on a set of AWS EC2 instances, deployed in the eu-west-1
region. The tested Jira instance was an out-of-the-box fresh Jira Data Center installation setup as a single node and without any additional configuration. This approach allowed us to ensure satisfying performance in a basic setup with more nodes adding additional performance gains if necessary.
Below, you can check the details of the environments used for Jira Software Data Center and the specifications of the EC2 instances. Hardware sizes were either reduced or not increased with the introduction of the new testing framework.
Hardware | Software | ||
EC2 type: | c5d.9xlarge | Operating system | Ubuntu 20.04.6 LTS |
Nodes | 1 node | Java platform | Java 17.0.11 |
Database
Hardware | Software | ||
EC2 type: | db.m5.4xlarge | Database: | Postgres 14 |
Operating system: | Ubuntu 20.04.6 LTS |
Load generator
Hardware | Software | ||
CPU cores: | 2 | Browser: | Headless Chrome |
Memory | 8GB | Automation script: | Playwright |
Test dataset
Before we started testing, we needed to determine what size and shape of the dataset represents a typical large Jira Software instance. To achieve that, we created a new dataset that more accurately matches the instance profiles of Jira Software in very large organizations.
The data was collected based on the anonymous statistics received from real customer instances. A machine-learning (clustering) algorithm was used to group the data into small, medium, large, and extra-large instances data shapes. For our tests, we decided to use median values gathered from extra-large instances.
The new dataset significantly increases some dimensions, such as the number of issues, comments, attachments, projects, agile boards, and workflows, compared to the dataset previously used to create the release performance reports. Some dimensions have slightly decreased, but the new values better reflect real-life customer statistics or match our guardrails.
In Jira 10.1, we introduced a new feature allowing instances to send a basic set of data that we use to improve the size of our testing datasets. Learn more about how you can send your instance's anonymized info to improve our dataset
The following table presents the dataset we used in our tests. It simulates a data shape typical in our extra-large customer cohort.
Data | Value |
---|---|
Agile boards | 2,861 |
Attachments | 2,100,000 |
Comments | 8,408,998 |
Custom fields | 1200 |
Groups | 20006 |
Issues | 5,407,147 |
Permissions | 200 |
Projects | 4,299 |
Security levels | 170 |
Users | 82,725 |
Workflows | 4,299 |
Data | Value |
---|---|
Agile boards | 2,861 |
Attachments | 2,100,000 |
Comments | 8,408,998 |
Custom fields | 1200 |
Groups | 20006 |
Issues | 5,407,147 |
Permissions | 200 |
Projects | 4,299 |
Security levels | 170 |
Users | 82,725 |
Workflows | 4,299 |
Testing results
NFR tests
This year, we've introduced a set of test scenarios based on a framework that focuses on Non-Functional Requirements (NFR) thresholds for key user actions.
We've established a target threshold for each measured action. These thresholds, set according to the action type, serve as benchmarks for reliability, responsiveness, and scalability, ensuring that our product meets the expected performance standards. We're committed to ensuring that we don’t deliver performance regressions, maintaining the quality and reliability of our product.
It’s important to clarify that the thresholds outlined in this report aren't the targets we strive to achieve; rather, they represent the lower bound of accepted performance for extra-large instances. Performance for smaller customers can and should be significantly better.
Action type | Response time | |
---|---|---|
50th percentile | 90th percentile | |
Page load | 3 s | 5 s |
Page transition | 2.5 s | 3 s |
The measured performance of the action was defined as the time from the beginning of an action (for example, initiating browser navigation for View actions or submitting a form) until the action is performed and the crucial information is visible (for example, the Issue summary, description, and activity are displayed for the View Issue action). Thanks to this approach, we can more closely measure the performance as it's perceived by the end user.
The following interpretations of the response times apply:
- 50th percentile - Gives a clear understanding of the average performance for most users in extra-large instances. It's less affected by extreme outliers, so it shows the central tendency of response times.
- 90th percentile - Highlights performance for worst-case scenarios, which may affect a smaller, but still noteworthy, portion of users in the extra-large instances.
Note that:
- We routinely carry out internal performance testing to ensure that all actions remain within the NFR thresholds. Our continuous monitoring enables us to optimize performance and effectively address any regressions.
- All actions had a 0% error rate, demonstrating strong system reliability and stability. For the list of bugs resolved since the previous 9.12 LTS, refer to the Jira Software 10.3 LTS release notes.
The results overall are as follows:
All the actions below achieved a PASS status within the 10.3 LTS.
Action | Response time | Target threshold | Achieved performance |
---|---|---|---|
Add comment | 90th percentile | 5000 ms | 789 ms |
50th percentile | 3000 ms | 630 ms | |
Advanced JQL - search by assignee | 90th percentile | 5000 ms | 1081 ms |
50th percentile | 3000 ms | 983 ms | |
Advanced JQL - search by priority | 90th percentile | 5000 ms | 2321 ms |
50th percentile | 3000 ms | 2125 ms | |
Advanced JQL - search by project | 90th percentile | 5000 ms | 1026 ms |
50th percentile | 3000 ms | 902 ms | |
Advanced JQL - search by project and user | 90th percentile | 5000 ms | 1213 ms |
50th percentile | 3000 ms | 732 ms | |
Advanced JQL - search by reporter | 90th percentile | 5000 ms | 899 ms |
50th percentile | 3000 ms | 825 ms | |
Advanced JQL - search by resolution | 90th percentile | 5000 ms | 822 ms |
50th percentile | 3000 ms | 749 ms | |
Advanced JQL - search by word | 90th percentile | 5000 ms | 2415 ms |
50th percentile | 3000 ms | 2231 ms | |
Browse boards | 90th percentile | 5000 ms | 608 ms |
50th percentile | 3000 ms | 572 ms | |
Browse projects | 90th percentile | 5000 ms | 669 ms |
50th percentile | 3000 ms | 634 ms | |
Create issue | 90th percentile | 3000 ms | 838 ms |
50th percentile | 2500 ms | 828 ms | |
Edit issue | 90th percentile | 3000 ms | 718 ms |
50th percentile | 2500 ms | 595 ms | |
Edit sprint on backlog | 90th percentile | 3000 ms | 425 ms |
50th percentile | 2500 ms | 403 ms | |
Basic search - search by assignee | 90th percentile | 5000 ms | 1127 ms |
50th percentile | 3000 ms | 1037 ms | |
Sidebar (on Issue view) | 90th percentile | 5000 ms | 1285 ms |
50th percentile | 3000 ms | 1205 ms | |
View backlog | 90th percentile | 5000 ms | 1065 ms |
50th percentile | 3000 ms | 1018 ms | |
View board | 90th percentile | 5000 ms | 1083 ms |
50th percentile | 3000 ms | 1039 ms | |
View dashboard | 90th percentile | 5000 ms | 436 ms |
50th percentile | 3000 ms | 414 ms | |
View project summary | 90th percentile | 5000 ms | 496 ms |
50th percentile | 3000 ms | 469 ms | |
View issue | 90th percentile | 5000 ms | 821 ms |
50th percentile | 3000 ms | 710 ms |
Verifying there are no regressions since 9.12 LTS
Comparing results between the old and new testing frameworks is challenging due to variations in their testing approaches, including differences in the datasets used and implementation details of the scenarios.
We conducted a sample batch of the same test scenarios in an identical environment, utilizing a new, more demanding dataset on Jira version 9.12.16 with Java 17. This approach allowed us to make the results comparable within the new testing framework.
When tested in the same manner, no regressions were observed in Jira Software version 10.3.0 compared to version 9.12.16.
Further resources for scaling and optimizing
If you'd like to learn more about scaling and optimizing Jira, here are a few additional resources that you can refer to.
Archiving issues
The number of issues affects Jira's performance, so you might want to archive issues that are no longer needed. You may also conclude that the massive number of issues clutters the view in Jira, and therefore, you still may wish to archive the outdated issues from your instance. Learn more about archiving projects
Jira Software guardrails
Product guardrails are data-type recommendations designed to help you identify potential risks and aid you in making decisions about the next steps in your instance optimization journey. Learn more about Jira Software guardrails
Jira knowledge base
For detailed guidelines on specific performance-related topics refer to the Troubleshoot performance issues in Jira server article in the Jira knowledge base.
Jira Enterprise Services
For help with scaling Jira in your organization directly from experienced Atlassians, check out our Additional Support Services offering.
Atlassian Experts
The Atlassian Experts in your local area can also help you scale Jira in your own environment.