Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-31855

Improve rendition of large documents in PDF viewer

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2021
    • Fix Version/s: 2021.40, 2023.1
    • Component/s: Convert, Preview
    • Release Notes Summary:
      Live renditions are more scalable
    • Release Notes Description:
      Hide

      The live document rendering used as preview are now processed by worker nodes within a managed thread pools instead of being done on front nodes, the rendering is cached and shared between all front nodes.
      This feature is activated by default on LTS 2023.
      On LTS 2021 it can be activated by setting nuxeo.rendition.legacy.enabled=false in the nuxeo.conf file.
      The number of threads per worker nodes executing RenditionWork can be tuned with nuxeo.work.queue.renditionBuilder.threads=2, default being 2 threads per node, with a max concurrency of 6.

      Show
      The live document rendering used as preview are now processed by worker nodes within a managed thread pools instead of being done on front nodes, the rendering is cached and shared between all front nodes. This feature is activated by default on LTS 2023. On LTS 2021 it can be activated by setting nuxeo.rendition.legacy.enabled=false in the nuxeo.conf file. The number of threads per worker nodes executing RenditionWork can be tuned with nuxeo.work.queue.renditionBuilder.threads=2 , default being 2 threads per node, with a max concurrency of 6.
    • Backlog priority:
      850
    • Sprint:
      nxplatform #90, nxplatform #91
    • Story Points:
      8

      Description

      Scenario:
      A large document that is viewed with PDF viewer is uploaded into Nuxeo.
      Issues arise when multiple concurrent requests are made to access this document. Since, the blobs can be large in size it can take a while to get them from S3; If additional concurrent requests are made to the server at the same time, duplicate blob downloads for the same files are triggered from S3 and then once the blob retrieval from S3 is completed, the conversion process is then triggered on each of the duplicate blob that was downloaded.

      As such, for instance if 10 concurrent requests are made by 10 users to the same server, the blob is downloaded 10 times from S3 and then the conversion process is started 10 times on each of the blob as well. This is an inherently expensive operation so causes the JVM to run out of heap memory and the nuxeo process to die

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: