Problema

Cuando se cargan determinados archivos PDF en AEM, la utilización de la memoria del sistema operativo por parte de la JVM es demasiado alta. El proceso de Java se cuelga o se bloquea. En Linux, el sistema operativo mata el proceso java.

Los volcados de subprocesos muestran subprocesos similares que causan una alta utilización de la CPU:

"JobHandler: /etc/workflow/instances/server0/2017-03-08_4/update_asset_6:/content/dam/test.pdf/jcr:content/renditions/original" #3270 daemon prio=1 os_prio=-2 tid=0x0000000020802000 nid=0xc7d0 runnable [0x00000000396be000]
java.lang.Thread.State: RUNNABLE
at sun.java2d.cmm.lcms.LCMS.createNativeTransform(Native Method)
at sun.java2d.cmm.lcms.LCMS.createTransform(LCMS.java:156)
at sun.java2d.cmm.lcms.LCMSTransform.doTransform(LCMSTransform.java:155)
locked <0x00000000f55ab218> (a sun.java2d.cmm.lcms.LCMSTransform)
at sun.java2d.cmm.lcms.LCMSTransform.colorConvert(LCMSTransform.java:629)
at java.awt.color.ICC_ColorSpace.toRGB(ICC_ColorSpace.java:182)
at com.adobe.internal.pdftoolkit.color.ColorManager.convertICCToDeviceRGB(ColorManager.java:167)
at com.adobe.internal.pdftoolkit.pdf.graphics.impl.ColorSpaceCacheImpl.toRGB(ColorSpaceCacheImpl.java:175)
at com.adobe.internal.pdftoolkit.services.pdfParser.ParserUtils.preProcessAxialShading(ParserUtils.java:264)
at com.adobe.internal.pdftoolkit.services.pdfParser.ContentStreamParser.applyShading(ContentStreamParser.java:1713)
at com.adobe.internal.pdftoolkit.services.pdfParser.ContentStreamParser.sh(ContentStreamParser.java:1672)
at com.adobe.internal.pdftoolkit.pdf.content.processor.ShadingPatternOperator.process(ContentOperators.java:790)
at com.adobe.internal.pdftoolkit.pdf.content.processor.ContentStreamProcessor.process(ContentStreamProcessor.java:103)
at com.adobe.internal.pdftoolkit.services.pdfParser.PDFContentItemsList$PDFContentItemsListIterator.processObjects(PDFContentItemsList.java:176)
at com.adobe.internal.pdftoolkit.services.pdfParser.PDFContentItemsList$PDFContentItemsListIterator.hasNext(PDFContentItemsList.java:127)
at com.adobe.internal.pdftoolkit.services.rasterizer.impl.RasterDocument.createPage(RasterDocument.java:129)
at com.adobe.internal.pdftoolkit.services.rasterizer.impl.PDFToRasterConverter.toBufferedImage(PDFToRasterConverter.java:127)
at com.adobe.internal.pdftoolkit.services.rasterizer.PageRasterizer.next(PageRasterizer.java:98)
at com.day.cq.dam.handler.standard.pdf.PdfHandler.getImage(PdfHandler.java:592)
at com.day.cq.dam.handler.standard.pdf.PdfHandler.getImage(PdfHandler.java:555)
at com.day.cq.dam.core.process.CreatePdfPreviewProcess.execute(CreatePdfPreviewProcess.java:109)
at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93)
at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:189)
at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:244)
at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:500)
at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.startJob(JobQueueImpl.java:291)
locked <0x00000000c91531e0> (a org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl)
at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.access$100(JobQueueImpl.java:58)
at org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1.run(JobQueueImpl.java:227)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Entorno

AEM 6.2 sobre Oracle Java 1.8

Resolución

A. Eliminar los trabajos de sling de flujo de trabajo de recursos

  1. Vaya a http://host:port/crx/de/index.jsp e ingrese como usuario administrador

  2. Vaya a esta ruta, donde {slingid} es el ID de Sling de la instancia de AEM.

    /var/eventing/jobs/assigned/{slingid}/com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model
  3. Haga clic con el botón derecho y elimine el nodo com.adobe.granite.workflow.job.job.etc.workflow.models.dam.update_asset.jcr_content.model

  4. Guardar

  5. Reiniciar AEM

Esto elimina todos los trabajos de sling activos para PDF que están causando un fallo en AEM.

B. Instalar la herramienta rasterizadora de línea de comandos de PDF

  1. Póngase en contacto con el servicio de atención al cliente de AEM para obtener el archivo cq-dam-pdfrasterizer*.zip para su sistema operativo

  2. Suba el archivo zip a su servidor AEM

  3. Descomprimir el archivo zip a una nueva carpeta en el servidor

  4. Cargue un archivo PDF al servidor en la misma carpeta en la que extrajo el archivo zip

  5. Ejecute este comando en esa carpeta para asegurarse de que el rasterizador funciona (reemplace pdffilename.pdf con el nombre de archivo del documento pdf)

    /opt/aem/author62/rasterizer/PDFRasterizer -d -p 1 -s 1280 -t PNG -i pdffilename.pdf

    El resultado sería el siguiente:

    Total time in image conversion (in ms): 163
    Total time (in ms): 896. Time to initialize: 12. Time for conversion: 884
  6. Además de los pasos de esa página, también debe modificar el paso del flujo de trabajo Rasterizar PDF/Vista previa de la imagen de AI en Activo de actualización de DAM. Eliminar "application/pdf" de la lista de "Mime Types"

  7. Asumiendo que el rasterizador funciona bien en la línea de comandos, entonces siga todos los pasos de este artículo para configurarlo para que funcione en AEM

  8. Haga clic en "Guardar" para guardar el modelo de flujo de trabajo

  9. Ahora intente cargar archivos PDF y las variantes de representación se generarán muy rápidamente y sin necesidad de utilizar mucha memoria

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea