Analyzing and reporting performance issues

June 16, 2025
News
Industry: 
Open RepositoryDSpace ExpressCustom DSpace
When you encounter a performance issue on your DSpace repository, it can be difficult to know where to start. This guide outlines the steps to help you describe, investigate, and report performance-related issues. The recommendations below can speed up the troubleshooting process but also help the development team understand and resolve the problem more effectively.

Reporting DSpace issues

If you’re new to reporting DSpace issues in general, you can find a great guide about that on the Lyrasis wiki.

Narrow down the issue

When reporting a performance issue, it’s good to start by asking yourself a couple of questions

  • Affected pages
    • Is the problem limited to a specific page (e.g., the home page) or a type of page (e.g., all browse pages or item pages)?
  • Authentication required?
    • Does the issue occur only after logging in, or does it also affect anonymous users?
  • Trigger condition
    • Does the issue occur as soon as the page loads, or only after you interact with it: click a button, type in a form field?
  • Reproducible on demo?
    • Does the issue occur only in your repository, or can it also be reproduced on demo.dspace.org?
    • If possible, provide example URLs on demo.dspace.org to help others replicate the issue under known conditions.
  • Unusual circumstances?
    • If the issue is unique to your own repository, consider if there’s something unusual about your setup.
    • For instance, an exceptionally large number of collections might cause delays or errors, particularly if a UI component is attempting to list or search through all collections.
  • Stuck loading screen?
    • If you see a loading screen that stays up for a very long time, does it go away when you click on it?
    • That's usually a sign that the app isn't really loading all that long, but that there’s some bug in the frontend where we don't detect that the server has responded. Clicking causes the UI re-run a number of checks, so that might cause it to notice: hey we're done loading, let's hide the loading screen

Investigate the network activity

Take a look at the network panel in your browser's developer tools to pinpoint which request is the cause of the issue

How to access the network panel

  • Chrome: Ellipsis menu → More tools → Developer tools → Network
  • Firefox: Hamburger menu → More tools → Web Developer Tools → Network
  • Safari: Menu bar → Develop → Show Web Inspector → Network

Caption: The network panel in Chrome:

Types of request

  • XMLHttpRequests (XHR)
    • Retrieve data from the REST API
    • Performance varies based on the content in your repository
    • Issue more likely to be unique to you
    • Start looking here
  • Javascript requests (JS)
    • Download the code to run the UI
    • Mostly identical across repositories
    • Can indicate problems with how the app is bundled
  • Initial HTML request
    • If this slow it indicates a problem with the server side rendering performance

The top of the network panel will have a way to filter based on the type of request. In chrome that looks like this:

What to look for

  • XHR requests that are very slow, or never complete:
    • This can be an indication that the problem lies on the backend side
    • To test that right click that request to copy its url, and try it out directly on the HAL browser for the backend
Here’s what that would look like in the network tab. We have a single request, to the top level community endpoint that takes over 20s, so we can be pretty sure this is the cause of the delay.
Here you see a lot of identical requests with the label 1581. This was a bug where the issue was that the response to that request was deemed no longer valid by the time it arrived so the request kept being repeated
  • Uncertain cases:
    • If no requests stand out, or you’re unsure, report the issue to the frontend repository.  If we investigate it later, and find that it should have been a backend issue we can still move it.

Export Network Traffic (HAR File)

  • it's always useful if you include an export of your network traffic as a HAR file
    • Chrome: Click the download icon in the top bar of the network tab
    • Firefox: Click the gear icon in the top-left of the Network tab → Save all as HAR.**
    • Safari: Use the export button in the top bar of the network tab
  • A HAR file allows us to see exactly which network requests happened, in what order, how long they took, and what the server responses contained
  • It won't show us what the page looked like, where you clicked, if a content shift happened etc. But if you've followed the steps up until now you've included those already

When the whole repository is slow

Sometimes performance problems aren’t limited to specific pages but affect the entire site. In those cases the load on the node server could be the culprit

Server-Side rendering (SSR) in DSpace

  • The DSpace UI uses server side rendering, mainly to ensure that crawlers from search engines can index everything without having to run javascript
  • For every request that comes in, the angular server runs the javascript code needed to generate the page, does all the requests to the rest api to get the data, and returns the resulting html file
  • This can be used a static file for a crawler to index
  • Or for a human user, to already see the content while they're downloading the javascript code to render the rest of the application in their own browser

Performance under load

  • This works fine if the both the rest angular server have plenty of resources and are not under heavy load,
  • but as the load increases, the resources that the server has to spend on each request go down, and each request takes longer to process
  • This is why the ability to disable SSR for certain routes was added in DSpace 8 and refined in DSpace 9. See the DSpace docs for how to configure which routes it applies to
  • Keep in mind though that while disabling SSR for a lot of routes can greatly improve the performance and resource usage of your node server, it can also hurt your SEO score or block arguably legitimate use cases for bots, so keep that in mind

Conclusion

Performance issues can be frustrating, but with a structured approach, they become much easier to diagnose and resolve. By narrowing down the symptoms, investigating network activity, and providing clear reports (including HAR files when possible), you’ll significantly speed up troubleshooting, and make it easier for developers to help you effectively.

Remember: even if you’re unsure whether the issue is frontend or backend, it’s always better to report it than to leave it unresolved. The DSpace community and maintainers rely on clear, actionable feedback to continue improving the platform for everyone.

Share this
Contact Us

Get in Touch

Contact us today to discuss your unique requirements and explore how Atmire can elevate your repository to new heights.

Under no circumstances will your contact details ever be shared outside Atmire without your explicit consent.
Thanks you! We've received your message.

We are currently experiencing very high numbers of contact form entries but nevertheless aim to get back to you as soon as possible. Replies to contact form entries from institutional or corporate email accounts (e.g. non-gmail, yahoo, ...) are actively prioritized.
Oops! Something went wrong while submitting the form.