Known performance issues and suggested solutions
There have been few cases, where customers have run into performance problems with RMsis. This small guide should be able to give some pointers to possible solutions.
In this section, we will share known issues related to RMsis performance, including a few, which were shared by some of our customers.
Generic Issues applicable to all versions
Issue : System is low on memory
Continuous swapping of memory / Thrashing can lead to performance issues with JVM. Symptoms are
- Close to 100% memory is being utilized
- CPU running at 100% utilization
- High amount of disk I/O being reported by the system
Resolution
The following can be considered for improvement in system performance.
- Using a system with larger memory
- OR reducing the number of processes on the server
- If there are memory leaks in any application, a system reboot can help.
Unusual cases reported
- Rackspace 2 GB instance : The system was running JIRA + RMsis and worked well for couple of days, but then slowed down to an unacceptable level. Switching over to a 4GB instance resolved the problem.
- Windows server : The RMsis application slowed down considerably, even though the system had adequate memory. Since the machine was heavily loaded, customer suspected issue related to memory fragmentation and decided to reboot the machine. This solved the problem, but the exact cause was never confirmed.
RMsis 1.8.0 - Beta
Concurrency tests were conducted with an instance containing large data; i.e.
- Total of 100,000 Requirements in Database and 25,000 Requirements in a single project
- Total of 100,000 Test Cases in Database and 25,000 Test Cases in a single project
- Total of 100,000 issues in Database and 25,000 Issues in a single project.
Some tests related to data size were conducted with 500,000 entities. This information is shared with the test results, where appropriate.
Key findings are shared in the following subsections. Our aim would be to target closure of all known issues with 1.8.0, at least to an extent that RMsis delivers predictable performance.
Performance Characteristics are being plotted in RMsis 1.8.0 Performance Characteristics.
Issue : Initial Sync up time with JIRA is quite large.
This is specially true for installations with large number of Issues (say more than 100,000 issues). Since RMsis synchronizes issues of all Projects, the performance is impacted by the total number of issues in the JIRA instance.
In case of SQL Server (we had used SQL Server 2008), multiple concurrent updates resulted in deadlock errors within the database.
Resolution
- JIRA Sync process is now being run in he background.
- However, it is recommended that the system be made available for use only after the initial sync is complete.
- Else, the users may experience performance issues.
- Regarding SQL Server, this operation is serialized for the time being, leading to a larger sync up time as compared to other databases.This issue is tracked as RMI-2973.
Issue : Create, Delete and Indentation operations are slow with large data
While doing Create, Delete and Indent / Outdent operations, the time taken is significant with large Database.
Resolution
- These operations have been optimized with 1.8.0-r.260 release, but more needs to be done.
- For the time being, it is suggested that the maximum number of entities selected for Indent, Outdent and Delete operations be limited to few only (order of 10's).
- All of these tasks are tracked against RMI-2857 (Master Task for Performance Optimization).
Issue : PDF Generation and Custom Report generation consume lot of memory.
Concurrent requests for report generation may lead to Out of Memory Errors. This issue will become prominent if number of users are large.
Resolution
- Immediate objective is to bring system into a deterministic state, i.e. prevent out of memory errors. This can be done by
- allocating large enough JVM size, based on the maximum number of entities in a single project. For the reference project used here, about 4 GB of RAM should be allocated to JVM.
- We have serialized the report generation process, so that concurrent requests do not lead to memory errors.
- Optimization of Algorithms will take considerable effort and time.
- These issues are tracked as RMI-2753 and RMI-2606.
Issue : CSV import is slow, specially when the DataBase size is large (order of 1 million)
Resolution
- This being a one time activity, we do not consider it critical for 1.8.0 Beta release.
- This issue requires further investigation.
- This issue is tracked as RMI-2811.
Issue : CSV Export is slow
Resolution
- This issue is currently being investigated.
- However, this issue is not considered critical, since it will not impact the overall system performance, if adequate memory is available with the JVM.
- This issue is tracked as RMI-2861.
RMsis 1.7.x and older versions
Issue : Slow response due to Browser performance
RMsis 1.7.8 and earlier versions try to load all available data on the browser, but the Browsers can typically render only about 1000 to 1500 requirements at any one point of time (Depending upon browser / client machine hardware configuration).
This would impact display of large tables which do not support pagination, like Planned Requirements and Traceability.
Resolution
In these versions of RMsis, the only way to handle a larger requirement set is to
- either develop a hierarchy of requirements and view it selectively
- OR use the filters in column headers to reduce the number of requirements displayed at any one point of time.
A fix for this problem has been introduced in RMsis 1.8.0 and later, where we fetch and display only a partial data set on the browser.
Issue : Slow response due to Server side performance
The server side implementation has performance bottlenecks, when loading a Hierarchy of requirements OR performing complex operations like cyclic dependency checks.
The performance bottleneck becomes apparent, when doing bulk operations with large data (like indenting 1000 requirements).
Resolution
This issue has been fixed for most of the cases and a better performing RMsis is available as RMsis 1.8.0 (Performance Release).