Jira Data Center is Slow Due to High Latency Connections While Using Reverse Proxy
Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.
Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles for non-Data Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Symptoms
Interaction with the Jira application is slow.
Cause
Jira pages pull many separate JavaScript, CSS and image files from the server. Since the Tomcat container instructs the browser to avoid caching, all content will be sequentially (in order of inclusion) checked from the server. This multiplies the connection roundtrip time.
The content on this page relates to platforms which are not supported by JIRA. Consequently, Atlassian cannot guarantee providing any support for it. Please be aware that this material is provided for your information only and using it is done so at your own risk.
The content on this page relates to platforms which are not supported by JIRA. Consequently, Atlassian cannot guarantee providing any support for it. Please be aware that this material is provided for your information only and using it is done so at your own risk.
PS : This article includes a Workaround as well as a Resolution section. Please follow any one of them.
Workaround
Configuring cache timeouts on the proxy level
If the application is published from a Reverse Proxy, configure cache timeouts as shown in the below example.
An example for Apache httpd using mod_expires:
LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so LoadModule deflate_module modules/mod_deflate.so
Make sure it is enabled
Control the caching headers sent to the client browser:
ExpiresActive On ExpiresDefault "access plus 300 seconds" <Directory "/"> ExpiresByType text/html "access plus 1 day" ExpiresByType text/css "access plus 1 day" ExpiresByType text/javascript "access plus 1 day" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/png "access plus 1 month" </Directory>
Resolution
Configuring caching at the browser level
Add the following Valve tag to the Jira Context element (eg in server.xml
or conf/Catalina/localhost/Jira.xml
) will restore normal client side caching:
<Valve className="org.apache.catalina.authenticator.FormAuthenticator" securePagesWithPragma="false" />