Problema

Después de cargar ciertos PDF, la instancia de AEM se bloquea.  En los archivos de registro, verá OutOfMemoryError.  En los volcados de subprocesos, se ven subprocesos como el de abajo que muestra los fragmentos pegados en el código JVM sun.java2d.cmm.lcms.LCMS.createNativeTransform:

"JobHandler: /etc/workflow/instances/server0/2017-02-16/update_asset_833:/content/dam/geometrixx/documents/Test.pdf/jcr:content/renditions/original" #168 daemon prio=1 os_prio=0 tid=0x00007ff525c59800 nid=0x1ab7 runnable [0x00007ff3feffc000]
   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 <0x000000077e9ae718> (a sun.java2d.cmm.lcms.LCMSTransform)
    at sun.java2d.cmm.lcms.LCMSTransform.colorConvert(LCMSTransform.java:268)
    at java.awt.image.ColorConvertOp.ICCBIFilter(ColorConvertOp.java:355)
    at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:282)
    at com.adobe.internal.pdftoolkit.image.ARGBImage.convertToRGB(ARGBImage.java:340)
    at com.adobe.internal.pdftoolkit.image.ARGBImage.handleICCColorSpace(ARGBImage.java:177)
    at com.adobe.internal.pdftoolkit.image.ARGBImage.convertToRGB(ARGBImage.java:310)
    at com.adobe.internal.pdftoolkit.image.ARGBImage.access$1300(ARGBImage.java:59)
    at com.adobe.internal.pdftoolkit.image.ARGBImage$ARGBTilesIterator.ConvertToRGB(ARGBImage.java:587)
    at com.adobe.internal.pdftoolkit.image.ARGBImage$ARGBTilesIterator.hasNext(ARGBImage.java:640)
    at com.adobe.internal.pdftoolkit.services.rasterizer.impl.RasterContentImageItem.writeToDisplayArea(RasterContentImageItem.java:211)
    at com.adobe.internal.pdftoolkit.services.rasterizer.impl.RasterDocument.createPage(RasterDocument.java:131)
    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:583)
    at com.day.cq.dam.handler.standard.pdf.PdfHandler.getImage(PdfHandler.java:546)
    at com.day.cq.dam.core.impl.cache.CQBufferedImageCache.getImage(CQBufferedImageCache.java:116)
    at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createImageLayer(CommonsGfxRenderer.java:460)
    at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.createLayer(CommonsGfxRenderer.java:138)
    at com.day.cq.dam.core.impl.gfx.CommonsGfxRenderer.render(CommonsGfxRenderer.java:91)
    at com.adobe.cq.gfx.impl.GfxImpl.render(GfxImpl.java:94)
    at com.day.cq.dam.core.impl.RenditionMakerImpl$PlanBasedTemplate.apply(RenditionMakerImpl.java:127)
    at com.day.cq.dam.core.impl.RenditionMakerImpl.generateRenditions(RenditionMakerImpl.java:184)
    at com.day.cq.dam.core.process.CreateThumbnailProcess.createThumbnails(CreateThumbnailProcess.java:119)
    at com.day.cq.dam.core.process.ThumbnailProcess.execute(ThumbnailProcess.java:76)
    at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93)
    at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:184)
    at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:234)
    at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:512)
    at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.startJob(JobQueueImpl.java:303)
    - locked <0x00000005cd6dab40> (a org.apache.sling.event.impl.jobs.queues.JobExecutionContextImpl)
    at org.apache.sling.event.impl.jobs.queues.JobQueueImpl.access$100(JobQueueImpl.java:66)
    at org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1.run(JobQueueImpl.java:238)
    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.x usando JDK 8

Causa

Es un problema conocido con el procesamiento de PDF en AEM (CQ-4202164) causado por un problema de Oracle JVM.

Resolución

En sistemas Windows y Mac que usan Oracle JVM:

Si utiliza Oracle JVM en Windows o Mac, configure Java para utilizar la API de KCMS heredada en lugar de LCMS.  Hay un problema conocido que hace que esto no funcione en JDK8 en Linux.

Modifique su script de inicio AEM y añada este parámetro JVM a la variable CQ_JVM_OPTS:

-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider

Por ejemplo (fragmento del script de inicio):

# default JVM options
if [ -z "$CQ_JVM_OPTS" ]; then
        CQ_JVM_OPTS='-server -Xmx1024m -XX:MaxPermSize=256M -Djava.awt.headless=true -Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider'
fi

Otras soluciones (todos los sistemas operativos)

A. Eliminar los trabajos de actualización de flujo de trabajo de activos

  1. Vaya a http://host:port/crx/de/index.jsp e ingrese como usuario administrador.
  2. Vaya a esta ruta donde {slingid} es el identificador 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. Guárdelo.
  5. Reinicie AEM.

Esto borra todos los trabajos de Sling activos para PDF que están colapsando AEM.

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

  1. Descargue este archivo zip [1] a su servidor AEM.

  2. Descomprima el archivo zip a una nueva carpeta en el servidor.

  3. Suba un archivo PDF al servidor en la misma carpeta en la que extrajo el archivo zip.

  4. 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 algo así como se muestra abajo:

    Total time in image conversion (in ms): 163
    Total time (in ms): 896. Time to initialize: 12. Time for conversion: 884
  5. Asumiendo que el rasterizador funciona bien en la línea de comandos, siga los pasos de este artículo para configurarlo para que funcione en AEM.

  6. Además de los pasos de esa página, también debe modificar el paso del flujo de trabajo de DAM Update Asset Rasterizar PDF/Rendición de visualización de imagen. Eliminar aplicación/pdf de la lista de tipos MIME.

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

  8. Ahora intente cargar archivos PDF y las variantes de representación se generarán 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