Nach dem Hochladen bestimmter PDFs stürzt die AEM-Instanz ab. In den Protokolldateien sehen Sie OutOfMemoryError. In den Thread-Sicherheitskopien sehen Sie Threads wie den weiter unten, der im JVM-Code sun.java2d.cmm.lcms.LCMS.createNativeTransform hängengebliebene Threads anzeigt:
"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)
Dies ist ein bekanntes Problem bei der Verarbeitung von PDFs mit AEM (CQ-4202164), welches durch ein Problem mit Oracle JVM verursacht wird.
Wenn Sie Oracle JVM auf Windows oder Mac verwenden, konfigurieren Sie Java so, dass es das ältere KCMS API anstatt LCMS benutzt. Es besteht ein bekanntes Problem, wodurch dies in JDK8 nicht unter Linux funktioniert.
Ändern Sie das AEM-Start-Skript und fügen Sie der Variable CQ_JVM_OPTS diesen JVM-Parameter hinzu:
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
# 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
- Wechseln Sie zu http://host:port/crx/de/index.jsp und melden Sie sich als Benutzer mit Administratorrechten an.
- Navigieren Sie zu diesem Pfad, bei dem {slingid} die Sling-ID der AEM-Instanz darstellt
/var/eventing/jobs/assigned/{slingid}/com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model - Rechtsklicken Sie und löschen Sie den Knoten com.adobe.granite.workflow.job.etc.workflow.models.dam.update_asset.jcr_content.model
- Speichern.
- Starten Sie AEM neu.
Dadurch werden alle aktiven sling jobs für PDF-Dateien gelöscht, die AEM zum Abstürzen bringen.
-
Führen Sie den folgenden Befehl in diesem Ordner aus, um zu überprüfen, ob das Raster funktioniert (ersetzen Sie pdffilename.pdf mit dem Dateinamen des PDF-Dokuments).
/opt/aem/author62/rasterizer/PDFRasterizer -d -p 1 -s 1280 -t PNG -i pdffilename.pdf
Total time in image conversion (in ms): 163 Total time (in ms): 896. Time to initialize: 12. Time for conversion: 884
-
Sofern das Raster in der Kommandozeile funktioniert, folgen Sie den Schritten, die in diesem Artikel stehen, um es so zu konfigurieren, dass es in AEM funktioniert.