Documentation for JIRA 4.0. Documentation for other versions of JIRA is available too. 
![]()
If JIRA is not responding as quickly as a previous version or is taking a while to perform certain tasks, please follow the instructions on this page.
There are quite a few performance tips that can help JIRA to run quicker and may in fact solve your issues.
If tuning JIRA did not help, you will need to find exactly what is slow and what is causing it to run slow.
Lets find out where JIRA is spending its time.
JIRA comes with its own built-in Profiling Tool. It allows us to see how long JIRA spends doing individual requests and where that time is being taken.
The tool logs a tree of the time spent in certain methods with the output looking like:
[Filter: profiling] Turning filter on [jira_profile=on]
[116ms] - /secure/Dashboard.jspa
[5ms] - IssueManager.execute()
[5ms] - IssueManager.execute()
[5ms] - Searching Issues
[29ms] - IssueManager.execute()
[29ms] - IssueManager.execute()
[29ms] - Searching Issues
[28ms] - Lucene Query
[23ms] - Lucene Search
If JIRA is taking a long time to execute a specific operation (E.g. Creating an issue), it can be useful to get a complete thread dump of the JVM to find out exactly what is being executed.
For example, if Create Issue is taking a long time, execute the create issue and while you are waiting for it to return, execute a thread dump every few seconds. (for a 20 second operation, 5 thread dumps would be useful).
It is usually useful to find out how you machine is coping at the time of the slowness. In particular, the CPU usage and the memory swapping.
In *nix these can be done by using the command:
vmstat 1 > vmstat.log
This will put all the results into a file called vmstat.log.
Make sure you turn this off after, otherwise the file will consume your hard disk.
On Windows, you can use a third party tool or try and get a rough idea from the System Properties window. It is also possible to generate a log of system resources and their use with the Windows Performance Manager.
Verbose garbage collection will generate log statements that indicate when java is collecting garbage, how long it takes, and how much memory has been freed. You can enable verbose garbage collection by specifying the -verbose:gc jvm option. To have the garbage collection logs written to a file, use -Xloggc:<filename>
It is possible that your instance of JIRA maybe running low, or out of connections, this can cause JIRA to hang or perform very slowly. The best way to see this type of behaviour is via a thread dump, below is a sample snippet of a thread dump showing this problem:
"Thread-4" prio=6 tid=0x16d85988 nid=0xe20 in Object.wait() [0x17d9f000..0x17d9fce8]
at java.lang.Object.wait(Native Method)
- waiting on <0x04139d18> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at java.lang.Object.wait(Object.java:474)
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)
- locked <0x04139d18> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.ofbiz.core.entity.transaction.JNDIFactory.getJndiConnection(JNDIFactory.java:168)
at org.ofbiz.core.entity.transaction.JNDIFactory.getConnection(JNDIFactory.java:140)
at org.ofbiz.core.entity.TransactionFactory.getConnection(TransactionFactory.java:99)
at org.ofbiz.core.entity.ConnectionFactory.getConnection(ConnectionFactory.java:53)
at com.atlassian.jira.upgrade.ConnectionKeeper.openConnections(ConnectionKeeper.java:106)
at com.atlassian.jira.upgrade.ConnectionKeeper.run(ConnectionKeeper.java:87)
The lines that indicate this problem are the following:
- locked <0x04139d18> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
To help alleviate this you can increase your connection pool size. Information on performing this is application server specific, but if you are running Apache Tomcat or JIRA standalone (which uses Apache Tomcat), you can follow the following documentation to adjust the connection pool size.
We are the first to admit we are not experts in everything and, more often than not, there are other customers who have similar set ups and face similar issues. You should ask about your issues on the user forums as you are more than likely to get a quick and knowledgable response.
If you still have not got it resolved (even though Atlassians lurk on the forums continuously), please create a Support Request attaching all the information you gathered above with a detailed description of what operation is slow and your environment:
ping times from the App server to the Database (if it is on a seperate machine)ADMINISTRATION -> System -> System Info)ADMINISTRATION -> System -> System InfoADMINISTRATION -> System -> System Info)