Nuxeo Server

Performance Recommendations

Updated: March 18, 2024

Here is a non-exhaustive list of recommendations to get better performance:

  • For VCS, check that common properties are set as prefetched (see org.nuxeo.ecm.core.schema.TypeService--configuration and org.nuxeo.ecm.core.schema.TypeService--doctype).
  • For VCS, if you don't want to match proxies in your query, add a AND ecm:isProxy = 0 clause.
  • For VCS, if you don't use proxies at all, deactivate them at the repository level by adding inside the <repository> element the following:
      <proxies enabled="false"/>
    
  • If you are doing a NXQL query that involves custom schemas you may need to add custom indexes to make the request efficient. You can trace the slow NXQL queries using NXP-14845.
  • Use groups to manage ACLs. Adding a user to a group is free, but adding a user in an ACL at the document root level has a cost because optimized read ACLs need to be recomputed for all documents under the root.
  • For VCS, when using Nuxeo in cluster mode, consider using Redis VCS row cache invalidation.
  • For VCS, if possible disable the ACL optimization and switch all page providers to Elasticsearch. Look at the perf template.
  • Disable listeners that are not used (see above perf template).
  • Use BIGINT document identifier instead of default UID. This is done by adding a <idType>sequence</idType> in the repository contribution).
  • Consider disabling the OS swapping (sudo swapoff -a) or try to lower the swapiness (vm.swappiness=1).
  • Check the network latency between the application and the database.
  • Configure ImageMagick to use a single thread.
  • Monitor everything, JVM, GC, VCS cache hit ratio, database, system.