Server

Performance Recommendations

Updated: December 17, 2024

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

  • If you are doing an 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.
  • Try to switch all page providers to Elasticsearch.
  • 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.
  • Disable listeners that are not used (see the perf template above).
  • Use BIGINT document identifier instead of default UID. This is done by adding a <idType>sequence</idType> in the repository contribution.
  • Turn the Elasticsearch translog to async for all index (NXP-25587).

  • Tune the Elasticsearch settings and mappings:

    • Remove the html_strip char filters if not needed (on repository and audit index), its indexing cost is high on CPU.
    • Remove the ecm:binarytext fulltext index if highlights are no needed.
       
  • Disable audit log on loginSuccess (see above perf template).
  • Increase the audit writer batch size (nuxeo.stream.audit.batch.size).
  • Consider disabling the OS swapping (sudo swapoff -a) or try to lower the swappiness (vm.swappiness=1).
  • Check the network latency between the application and the database.
  • Monitor everything: JVM, GC, VCS cache hit ratio, database, system.